From: Howard Chu Date: Tue, 3 Apr 2012 19:24:27 +0000 (-0700) Subject: ITS#7219 fix for odd-aligned keys in mdb_update_key() X-Git-Tag: OPENLDAP_REL_ENG_2_4_32~125^2~21 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=0f1081449431cf0c2b4a00c1b742958f13cdb253;p=openldap ITS#7219 fix for odd-aligned keys in mdb_update_key() --- diff --git a/libraries/libmdb/mdb.c b/libraries/libmdb/mdb.c index 7129d0a1bc..6952d884e3 100644 --- a/libraries/libmdb/mdb.c +++ b/libraries/libmdb/mdb.c @@ -5054,11 +5054,11 @@ mdb_cursor_dbi(MDB_cursor *mc) static int mdb_update_key(MDB_page *mp, indx_t indx, MDB_val *key) { - indx_t ptr, i, numkeys; - int delta; - size_t len; MDB_node *node; char *base; + size_t len; + int delta; + indx_t ptr, i, numkeys; DKBUF; node = NODEPTR(mp, indx); @@ -5078,6 +5078,7 @@ mdb_update_key(MDB_page *mp, indx_t indx, MDB_val *key) #endif delta = key->mv_size - node->mn_ksize; + delta += (delta & 1); if (delta) { if (delta > 0 && SIZELEFT(mp) < delta) { DPRINTF("OUCH! Not enough room, delta = %d", delta);