]> git.sur5r.net Git - openldap/commitdiff
Fix syncprov_db_close, only cleanup thrctx once
authorHoward Chu <hyc@openldap.org>
Sat, 27 Nov 2004 16:05:49 +0000 (16:05 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 27 Nov 2004 16:05:49 +0000 (16:05 +0000)
servers/slapd/overlays/syncprov.c

index 7cd42efb295662d0583efa51e16512f91d08ccdf..69fccdeb5e670fa911e2970a290b0fbea31d6de9 100644 (file)
@@ -1587,11 +1587,12 @@ syncprov_db_config(
 typedef struct thread_keys {
        void *key;
        void *data;
-       ldap_pvt_thread_pool_keyfree_t *free;
+       ldap_pvt_thread_pool_keyfree_t *xfree;
 } thread_keys;
 
+#define MAXKEYS        32
 /* A fake thread context */
-static thread_keys thrctx[8];
+static thread_keys thrctx[MAXKEYS];
 
 /* Read any existing contextCSN from the underlying db.
  * Then search for any entries newer than that. If no value exists,
@@ -1663,8 +1664,9 @@ syncprov_db_close(
                syncprov_checkpoint( op, &rs, on );
        }
        for ( i=0; thrctx[i].key; i++) {
-               if ( thrctx[i].free )
-                       thrctx[i].free( thrctx[i].key, thrctx[i].data );
+               if ( thrctx[i].xfree )
+                       thrctx[i].xfree( thrctx[i].key, thrctx[i].data );
+               thrctx[i].key = NULL;
        }
 
     return 0;