]> git.sur5r.net Git - openldap/commitdiff
Update fixes for dbi_open/close, ITS#7515.
authorHallvard Furuseth <hallvard@openldap.org>
Sat, 4 May 2013 08:03:19 +0000 (10:03 +0200)
committerHallvard Furuseth <hallvard@openldap.org>
Sat, 4 May 2013 08:03:19 +0000 (10:03 +0200)
Reset me_dbflags[dbi] when closing DBI, to get rid of MDB_VALID flag.
mdb_env_close(): Re-fix DB-name memleak. DBIs > me_numdbs may exist.

libraries/liblmdb/mdb.c

index 7d4383f886714b9e88c0fa6c7d04713e442ae186..96ca73fb03f9c9688d43f26ab45d3144c4f8efc2 100644 (file)
@@ -2003,6 +2003,7 @@ mdb_txn_reset0(MDB_txn *txn)
                        char *ptr = env->me_dbxs[i].md_name.mv_data;
                        env->me_dbxs[i].md_name.mv_data = NULL;
                        env->me_dbxs[i].md_name.mv_size = 0;
+                       env->me_dbflags[i] = 0;
                        free(ptr);
                }
        }
@@ -3761,7 +3762,7 @@ mdb_env_close(MDB_env *env)
        if (env == NULL)
                return;
 
-       for (i = env->me_numdbs; --i > MAIN_DBI; )
+       for (i = env->me_maxdbs; --i > MAIN_DBI; )
                free(env->me_dbxs[i].md_name.mv_data);
 
        VGMEMP_DESTROY(env);
@@ -7226,6 +7227,7 @@ void mdb_dbi_close(MDB_env *env, MDB_dbi dbi)
        ptr = env->me_dbxs[dbi].md_name.mv_data;
        env->me_dbxs[dbi].md_name.mv_data = NULL;
        env->me_dbxs[dbi].md_name.mv_size = 0;
+       env->me_dbflags[dbi] = 0;
        free(ptr);
 }