]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap_r/tpool.c
Plug one-time leaks
[openldap] / libraries / libldap_r / tpool.c
index dea3985f9e56b575ea7b3f210e49cbfde595405e..44f9544b58e68c27aa015b1f7e195205bee386fb 100644 (file)
@@ -826,6 +826,13 @@ ldap_pvt_thread_pool_destroy ( ldap_pvt_thread_pool_t *tpool, int run_pending )
        ldap_pvt_thread_cond_destroy(&pool->ltp_pcond);
        ldap_pvt_thread_cond_destroy(&pool->ltp_cond);
        ldap_pvt_thread_mutex_destroy(&pool->ltp_mutex);
+       for (i=0; i<pool->ltp_numqs; i++) {
+               pq = pool->ltp_wqs[i];
+               if (pq->ltp_free) {
+                       LDAP_FREE(pq->ltp_free);
+               }
+       }
+       LDAP_FREE(pool->ltp_wqs);
        LDAP_FREE(pool);
        *tpool = NULL;
        ldap_int_has_thread_pool = 0;
@@ -976,6 +983,7 @@ ldap_int_thread_pool_wrapper (
                ldap_pvt_thread_cond_destroy(&pq->ltp_cond);
                ldap_pvt_thread_mutex_destroy(&pq->ltp_mutex);
                LDAP_FREE(pq->ltp_free);
+               pq->ltp_free = NULL;
        }
        ldap_pvt_thread_exit(NULL);
        return(NULL);