Hi,
I believe this patch resolves OtherBills veto wrt
where the pools debug code was going.
The patch provides stubs for apr_pool_xxx_debug at
release time, ensuring binary compatibility.
Sander
Index: include/apr_pools.h
===================================================================
RCS file: /home/cvs/apr/include/apr_pools.h,v
retrieving revision 1.70
diff -u -r1.70 apr_pools.h
--- include/apr_pools.h 13 Jan 2002 18:46:24 -0000 1.70
+++ include/apr_pools.h 17 Jan 2002 14:39:10 -0000
@@ -163,21 +163,37 @@
* (this flag only makes sense in combination with
POOL_FNEW_ALLOCATOR)
*
*/
-#if defined(APR_POOL_DEBUG)
-#define apr_pool_create_ex(newpool, parent, abort_fn, flag) \
- apr_pool_create_ex_debug(newpool, parent, abort_fn, flag, \
- APR_POOL__FILE_LINE__)
+APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
+ apr_pool_t *parent,
+ apr_abortfunc_t abort_fn,
+ apr_uint32_t flags);
+/**
+ * Debug version of apr_pool_create_ex.
+ * @param newpool See: apr_pool_create.
+ * @param parent See: apr_pool_create.
+ * @param abort_fn See: apr_pool_create.
+ * @param flags See: apr_pool_create.
+ * @param file_line Where the function is called from.
+ * This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ * Call this directly if you have you apr_pool_create_ex
+ * calls in a wrapper function and wish to override
+ * the file_line argument to reflect the caller of
+ * your wrapper function. If you do not have
+ * apr_pool_create_ex in a wrapper, trust the macro
+ * and don't call apr_pool_create_ex_debug directly.
+ */
APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
apr_pool_t *parent,
apr_abortfunc_t abort_fn,
apr_uint32_t flags,
const char *file_line);
-#else
-APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
- apr_pool_t *parent,
- apr_abortfunc_t abort_fn,
- apr_uint32_t flags);
+
+#if defined(APR_POOL_DEBUG)
+#define apr_pool_create_ex(newpool, parent, abort_fn, flag) \
+ apr_pool_create_ex_debug(newpool, parent, abort_fn, flag, \
+ APR_POOL__FILE_LINE__)
#endif
/**
@@ -234,14 +250,27 @@
* to re-use this memory for the next allocation.
* @see apr_pool_destroy()
*/
-#if defined(APR_POOL_DEBUG)
-#define apr_pool_clear(p) \
- apr_pool_clear_debug(p, APR_POOL__FILE_LINE__)
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *p);
+/**
+ * Debug version of apr_pool_clear.
+ * @param p See: apr_pool_clear.
+ * @param file_line Where the function is called from.
+ * This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ * Call this directly if you have you apr_pool_clear
+ * calls in a wrapper function and wish to override
+ * the file_line argument to reflect the caller of
+ * your wrapper function. If you do not have
+ * apr_pool_clear in a wrapper, trust the macro
+ * and don't call apr_pool_destroy_clear directly.
+ */
APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p,
const char *file_line);
-#else
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *p);
+
+#if defined(APR_POOL_DEBUG)
+#define apr_pool_clear(p) \
+ apr_pool_clear_debug(p, APR_POOL__FILE_LINE__)
#endif
/**
@@ -250,14 +279,27 @@
* @param p The pool to destroy
* @remark This will actually free the memory
*/
-#if defined(APR_POOL_DEBUG)
-#define apr_pool_destroy(p) \
- apr_pool_destroy_debug(p, APR_POOL__FILE_LINE__)
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p);
+/**
+ * Debug version of apr_pool_destroy.
+ * @param p See: apr_pool_destroy.
+ * @param file_line Where the function is called from.
+ * This is usually APR_POOL__FILE_LINE__.
+ * @remark Only available when APR_POOL_DEBUG is defined.
+ * Call this directly if you have you apr_pool_destroy
+ * calls in a wrapper function and wish to override
+ * the file_line argument to reflect the caller of
+ * your wrapper function. If you do not have
+ * apr_pool_destroy in a wrapper, trust the macro
+ * and don't call apr_pool_destroy_debug directly.
+ */
APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p,
const char *file_line);
-#else
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p);
+
+#if defined(APR_POOL_DEBUG)
+#define apr_pool_destroy(p) \
+ apr_pool_destroy_debug(p, APR_POOL__FILE_LINE__)
#endif
Index: memory/unix/apr_pools.c
===================================================================
RCS file: /home/cvs/apr/memory/unix/apr_pools.c,v
retrieving revision 1.139
diff -u -r1.139 apr_pools.c
--- memory/unix/apr_pools.c 15 Jan 2002 12:16:20 -0000 1.139
+++ memory/unix/apr_pools.c 17 Jan 2002 14:39:18 -0000
@@ -718,6 +718,32 @@
return APR_SUCCESS;
}
+/*
+ * Pool creation/destruction stubs, for people who are running
+ * mixed release/debug enviroments.
+ */
+
+APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool,
+ const char *file_line)
+{
+ apr_pool_clear(pool);
+}
+
+APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool,
+ const char *file_line)
+{
+ apr_pool_destroy(pool);
+}
+
+APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
+ apr_pool_t *parent,
+ apr_abortfunc_t abort_fn,
+ apr_uint32_t flags,
+ const char *file_line)
+{
+ return apr_pool_create_ex(newpool, parent, abort_fn, flags);
+}
+
/*
* "Print" functions