summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <ramil@ram-book.(none)>2005-05-05 17:17:55 +0500
committerunknown <ramil@ram-book.(none)>2005-05-05 17:17:55 +0500
commit936c84989e9fb4307983ce6fa94e23d5cf29dab9 (patch)
treed5974982cafbc0f2c511e9ef17c65ddabb5ec52d /include
parenta406c034b901be103bf7c2d129856a981340177b (diff)
downloadmariadb-git-936c84989e9fb4307983ce6fa94e23d5cf29dab9.tar.gz
A fix (bug #10179: error in default value setting).
include/my_handler.h: A fix (bug #10179: error in default value setting). Proper masks added: we should not touch extra bits. sql/key.cc: A fix (bug #10179: error in default value setting). Unnecessary code removed. sql/unireg.cc: A fix (bug #10179: error in default value setting). 1. we should take into account uneven bits (for bit fields) stored among NULL bits. 2. changed code which sets NULL bits for fields. 3. changed code which sets unused bits after NULL bits. 4. unused variables removed. BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
Diffstat (limited to 'include')
-rw-r--r--include/my_handler.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/my_handler.h b/include/my_handler.h
index cad15d5471f..c076ba0c2c9 100644
--- a/include/my_handler.h
+++ b/include/my_handler.h
@@ -72,10 +72,11 @@ typedef struct st_HA_KEYSEG /* Key-portion */
#define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \
{ \
- (bit_ptr)[0]= ((bit_ptr)[0] & ((1 << (bit_ofs)) - 1)) | \
+ (bit_ptr)[0]= ((bit_ptr)[0] & ~(((1 << (bit_len)) - 1) << (bit_ofs))) | \
((bits) << (bit_ofs)); \
if ((bit_ofs) + (bit_len) > 8) \
- (bit_ptr)[1]= ((bits) & ((1 << (bit_len)) - 1)) >> (8 - (bit_ofs)); \
+ (bit_ptr)[1]= ((bit_ptr)[1] & ~((1 << ((bit_len) - 8 + (bit_ofs))) - 1)) | \
+ ((bits) >> (8 - (bit_ofs))); \
}
#define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \