diff options
author | unknown <ingo@mysql.com> | 2005-04-28 19:34:05 +0200 |
---|---|---|
committer | unknown <ingo@mysql.com> | 2005-04-28 19:34:05 +0200 |
commit | 45031a44546e1bf0092c9ddcde6b56d7357f3903 (patch) | |
tree | 4e65f44049751fec4d3ff85e114155f9fe894035 /myisam | |
parent | 745d52bb3da3afb018061b4e3ec34420a8475389 (diff) | |
parent | 275c8e77907791f62ed334d9cafaba8d734a4d33 (diff) | |
download | mariadb-git-45031a44546e1bf0092c9ddcde6b56d7357f3903.tar.gz |
Merge mysql.com:/home/mydev/mysql-4.1-4100
into mysql.com:/home/mydev/mysql-5.0-5000
include/my_sys.h:
Auto merged
myisam/myisampack.c:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/myisampack.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/myisam/myisampack.c b/myisam/myisampack.c index 352c7954d72..74bb541b220 100644 --- a/myisam/myisampack.c +++ b/myisam/myisampack.c @@ -31,6 +31,7 @@ #define __GNU_LIBRARY__ /* Skip warnings in getopt.h */ #endif #include <my_getopt.h> +#include <assert.h> #if INT_MAX > 32767 #define BITS_SAVED 32 @@ -1996,7 +1997,9 @@ static void write_bits (register ulong value, register uint bits) { reg3 uint byte_buff; bits= (uint) -file_buffer.bits; - byte_buff=file_buffer.current_byte | (uint) (value >> bits); + DBUG_ASSERT(bits <= 8 * sizeof(value)); + byte_buff= (file_buffer.current_byte | + ((bits != 8 * sizeof(value)) ? (uint) (value >> bits) : 0)); #if BITS_SAVED == 32 *file_buffer.pos++= (byte) (byte_buff >> 24) ; *file_buffer.pos++= (byte) (byte_buff >> 16) ; @@ -2004,7 +2007,9 @@ static void write_bits (register ulong value, register uint bits) *file_buffer.pos++= (byte) (byte_buff >> 8) ; *file_buffer.pos++= (byte) byte_buff; - value&=(1 << bits)-1; + DBUG_ASSERT(bits <= 8 * sizeof(ulong)); + if (bits != 8 * sizeof(value)) + value&= (((ulong) 1) << bits) - 1; #if BITS_SAVED == 16 if (bits >= sizeof(uint)) { |