diff --git a/libraries/libmdb/mdb.c b/libraries/libmdb/mdb.c
index 7129d0a1bc0ba55ab6117e41671ac57a9999c8e2..6952d884e34753859682f0c704ca36f3f046a117 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);