]> git.sur5r.net Git - openldap/commitdiff
Revert "ITS#7515 fix mdb_dbi_open/close"
authorHoward Chu <hyc@symas.com>
Mon, 4 Feb 2013 18:53:17 +0000 (10:53 -0800)
committerHoward Chu <hyc@symas.com>
Mon, 4 Feb 2013 18:53:17 +0000 (10:53 -0800)
This reverts commit 48dc782ea612f85e8356a50bfbafe22e5be121cf.

libraries/liblmdb/mdb.c

index 36b02a345262ea8d7227e6c9a169efd91fd5b7bd..1bd472f6d8a5bee1452d9dbfd7be1c1dbcf39982 100644 (file)
@@ -1951,11 +1951,6 @@ static void
 mdb_txn_reset0(MDB_txn *txn)
 {
        MDB_env *env = txn->mt_env;
-       unsigned int i;
-
-       /* If there were uncommitted dbi_opens, undo them now */
-       for (i=env->me_numdbs; i<txn->mt_numdbs; i++)
-               mdb_dbi_close(env, i);
 
        if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) {
                if (!(env->me_flags & MDB_ROFS))
@@ -1963,6 +1958,7 @@ mdb_txn_reset0(MDB_txn *txn)
        } else {
                MDB_oldpages *mop;
                MDB_page *dp;
+               unsigned int i;
 
                /* close(free) all cursors */
                for (i=0; i<txn->mt_numdbs; i++) {
@@ -7055,6 +7051,7 @@ int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *db
                mdb_default_cmp(txn, slot);
                if (!unused) {
                        txn->mt_numdbs++;
+                       txn->mt_env->me_numdbs++;
                }
        }
 
@@ -7072,12 +7069,8 @@ int mdb_stat(MDB_txn *txn, MDB_dbi dbi, MDB_stat *arg)
 void mdb_dbi_close(MDB_env *env, MDB_dbi dbi)
 {
        char *ptr;
-       if (dbi <= MAIN_DBI || dbi >= env->me_maxdbs)
+       if (dbi <= MAIN_DBI || dbi >= env->me_numdbs)
                return;
-       /* If the dbi is greater than env->me_numdbs, no harm is done.
-        * And it may happen if we're closing a DB that was just opened,
-        * but the opening txn hadn't committed yet.
-        */
        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;