summaryrefslogtreecommitdiff
path: root/myisam/mi_packrec.c
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2001-11-22 13:50:50 +0200
committerunknown <monty@hundin.mysql.fi>2001-11-22 13:50:50 +0200
commitd576cd65d00d23b634e0ef4254660e67c055c045 (patch)
tree8c1d3e9b787e1017fce3c9e905b829557889f97a /myisam/mi_packrec.c
parent5975e2364942dfcf8bca2fcc8e3107b16dd2fa46 (diff)
downloadmariadb-git-d576cd65d00d23b634e0ef4254660e67c055c045.tar.gz
Fix bug when repairing compressed MyISAM files
LOCATE() is now case sensitive BUILD/compile-alpha-cxx: Don't build manager because it fails with linker error on Linux Alpha Docs/manual.texi: Changelog myisam/mi_check.c: Fix bug when repairing compressed MyISAM files myisam/mi_open.c: Fix bug when repairing compressed MyISAM files myisam/mi_packrec.c: Fix bug when repairing compressed MyISAM files myisam/myisamchk.c: Fix bug when repairing compressed MyISAM files myisam/myisamdef.h: Fix bug when repairing compressed MyISAM files mysql-test/r/func_group.result: Fix result for new RND function mysql-test/r/func_math.result: Fix result for new RND function mysql-test/r/func_str.result: test of new locate() mysql-test/t/func_str.test: test of new locate() sql/item_func.cc: LOCATE() is now case sensitive sql/sql_string.cc: LOCATE() is now case sensitive sql/sql_string.h: LOCATE() is now case sensitive
Diffstat (limited to 'myisam/mi_packrec.c')
-rw-r--r--myisam/mi_packrec.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/myisam/mi_packrec.c b/myisam/mi_packrec.c
index 31be2113c20..00e2c05ef5e 100644
--- a/myisam/mi_packrec.c
+++ b/myisam/mi_packrec.c
@@ -785,7 +785,10 @@ static void decode_bytes(MI_COLUMNDEF *rec,MI_BIT_BUFF *bit_buff,uchar *to,
if (bits <= 32)
{
if (bit_buff->pos > bit_buff->end+4)
+ {
+ bit_buff->error=1;
return; /* Can't be right */
+ }
bit_buff->current_byte= (bit_buff->current_byte << 32) +
((((uint) bit_buff->pos[3])) +
(((uint) bit_buff->pos[2]) << 8) +
@@ -829,7 +832,8 @@ static void decode_bytes(MI_COLUMNDEF *rec,MI_BIT_BUFF *bit_buff,uchar *to,
#else
-static void decode_bytes(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff, uchar *to, uchar *end)
+static void decode_bytes(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff, uchar *to,
+ uchar *end)
{
reg1 uint bits,low_byte;
reg3 uint16 *pos;
@@ -846,7 +850,10 @@ static void decode_bytes(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff, uchar *to, uc
if (bits < table_bits)
{
if (bit_buff->pos > bit_buff->end+1)
+ {
+ bit_buff->error=1;
return; /* Can't be right */
+ }
#if BITS_SAVED == 32
bit_buff->current_byte= (bit_buff->current_byte << 24) +
(((uint) ((uchar) bit_buff->pos[2]))) +