Silence some valgrind uninit warnings
authorHoward Chu <hyc@openldap.org>
Fri, 20 Nov 2015 09:47:56 +0000 (09:47 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 20 Nov 2015 09:47:56 +0000 (09:47 +0000)
libraries/liblmdb/mdb.c

index a122c29..c6d2156 100644 (file)
@@ -7756,6 +7756,8 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
                                        m3 = &m2->mc_xcursor->mx_cursor;
                                else
                                        m3 = m2;
+                               if (!(m3->mc_flags & C_INITIALIZED) || m3->mc_top < csrc->mc_top)
+                                       continue;
                                if (m3 != cdst &&
                                        m3->mc_pg[csrc->mc_top] == mpd &&
                                        m3->mc_ki[csrc->mc_top] >= cdst->mc_ki[csrc->mc_top]) {
@@ -7778,6 +7780,8 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst)
                                else
                                        m3 = m2;
                                if (m3 == csrc) continue;
+                               if (!(m3->mc_flags & C_INITIALIZED) || m3->mc_top < csrc->mc_top)
+                                       continue;
                                if (m3->mc_pg[csrc->mc_top] == mps) {
                                        if (!m3->mc_ki[csrc->mc_top]) {
                                                m3->mc_pg[csrc->mc_top] = cdst->mc_pg[cdst->mc_top];
@@ -8077,7 +8081,8 @@ mdb_rebalance(MDB_cursor *mc)
                                                m3 = &m2->mc_xcursor->mx_cursor;
                                        else
                                                m3 = m2;
-                                       if (m3->mc_snum < mc->mc_snum) continue;
+                                       if (!(m3->mc_flags & C_INITIALIZED) || (m3->mc_snum < mc->mc_snum))
+                                               continue;
                                        if (m3->mc_pg[0] == mp) {
                                                m3->mc_snum = 0;
                                                m3->mc_top = 0;
@@ -8113,6 +8118,8 @@ mdb_rebalance(MDB_cursor *mc)
                                        else
                                                m3 = m2;
                                        if (m3 == mc) continue;
+                                       if (!(m3->mc_flags & C_INITIALIZED))
+                                               continue;
                                        if (m3->mc_pg[0] == mp) {
                                                for (i=0; i<mc->mc_db->md_depth; i++) {
                                                        m3->mc_pg[i] = m3->mc_pg[i+1];