]> git.sur5r.net Git - openldap/commitdiff
ITS#7219 fix for odd-aligned keys in mdb_update_key()
authorHoward Chu <hyc@symas.com>
Tue, 3 Apr 2012 19:24:27 +0000 (12:24 -0700)
committerHoward Chu <hyc@symas.com>
Tue, 3 Apr 2012 19:24:27 +0000 (12:24 -0700)
libraries/libmdb/mdb.c

index 7129d0a1bc0ba55ab6117e41671ac57a9999c8e2..6952d884e34753859682f0c704ca36f3f046a117 100644 (file)
@@ -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);