From cvs-return-1408-apmail-apr-cvs-archive=apr.apache.org@apr.apache.org Sun Jun 10 14:37:41 2001 Return-Path: Delivered-To: apmail-apr-cvs-archive@apr.apache.org Received: (qmail 32459 invoked by uid 500); 10 Jun 2001 14:37:40 -0000 Mailing-List: contact cvs-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Reply-To: dev@apr.apache.org Delivered-To: mailing list cvs@apr.apache.org Received: (qmail 32441 invoked by uid 1103); 10 Jun 2001 14:37:38 -0000 Date: 10 Jun 2001 14:37:38 -0000 Message-ID: <20010610143738.32440.qmail@apache.org> From: dreid@apache.org To: apr-cvs@apache.org Subject: cvs commit: apr/memory/unix apr_sms.c dreid 01/06/10 07:37:38 Modified: memory/unix apr_sms.c Log: Fix the cleanup logic. Revision Changes Path 1.17 +5 -7 apr/memory/unix/apr_sms.c Index: apr_sms.c =================================================================== RCS file: /home/cvs/apr/memory/unix/apr_sms.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- apr_sms.c 2001/06/08 02:34:34 1.16 +++ apr_sms.c 2001/06/10 14:37:38 1.17 @@ -578,28 +578,26 @@ cleanup = mem_sys->cleanups; cleanup_ref = &mem_sys->cleanups; while (cleanup) { - if ((type == 0 || cleanup->cleanup_fn == cleanup_fn) && + if ((type == 0 || cleanup->type == type) && cleanup->data == data && cleanup->cleanup_fn == cleanup_fn) { *cleanup_ref = cleanup->next; - apr_lock_release(mem_sys->sms_lock); - mem_sys = mem_sys->accounting_mem_sys; if (mem_sys->free_fn) apr_sms_free(mem_sys, cleanup); rv = APR_SUCCESS; + } else { + cleanup_ref = &cleanup->next; + cleanup = cleanup->next; } - - cleanup_ref = &cleanup->next; - cleanup = cleanup->next; } apr_lock_release(mem_sys->sms_lock); /* The cleanup function must have been registered previously */ - return APR_EINVAL; + return rv; } APR_DECLARE(apr_status_t) apr_sms_cleanup_unregister_type(apr_sms_t *mem_sys,