This is the patch for win32 that fixes up the is_owner cleanup problem. It should correspond exactly to the patch for unix/mmap.c that I posted to [EMAIL PROTECTED] the other day.
Pretty simple. --Cliff Index: mmap.c =================================================================== RCS file: /home/cvs/apr/mmap/win32/mmap.c,v retrieving revision 1.11 diff -u -d -r1.11 mmap.c --- mmap.c 13 Mar 2002 20:39:24 -0000 1.11 +++ mmap.c 10 Apr 2002 04:16:31 -0000 @@ -68,8 +68,9 @@ apr_mmap_t *mm = themmap; apr_status_t rv = 0; - if (!mm->is_owner) { - return APR_SUCCESS; + if (!mm->is_owner || !mm->mhandle) { + /* XXX: we shouldn't ever get here */ + return APR_ENOENT; } if (mm->mv) { @@ -184,21 +185,21 @@ (*new_mmap)->is_owner = 1; old_mmap->is_owner = 0; apr_pool_cleanup_kill(old_mmap->cntxt, old_mmap, mmap_cleanup); + apr_pool_cleanup_register(p, *new_mmap, mmap_cleanup, + apr_pool_cleanup_null); } else { (*new_mmap)->is_owner = 0; } - apr_pool_cleanup_register(p, *new_mmap, mmap_cleanup, - apr_pool_cleanup_null); } return APR_SUCCESS; } APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm) { - apr_status_t rv; + apr_status_t rv = APR_SUCCESS; - if ((rv = mmap_cleanup(mm)) == APR_SUCCESS) { + if (mm->is_owner && ((rv = mmap_cleanup(mm)) == APR_SUCCESS)) { apr_pool_cleanup_kill(mm->cntxt, mm, mmap_cleanup); return APR_SUCCESS; } -------------------------------------------------------------- Cliff Woolley [EMAIL PROTECTED] Charlottesville, VA