You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by rp...@apache.org on 2012/07/30 11:47:03 UTC

svn commit: r1367050 - /apr/apr/trunk/tables/apr_tables.c

Author: rpluem
Date: Mon Jul 30 09:47:03 2012
New Revision: 1367050

URL: http://svn.apache.org/viewvc?rev=1367050&view=rev
Log:
* Prevent apr_table_mergen from aborting when APR_POOL_DEBUG is set and key or
  value are static literals not stored in pool managed memory.

Modified:
    apr/apr/trunk/tables/apr_tables.c

Modified: apr/apr/trunk/tables/apr_tables.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/tables/apr_tables.c?rev=1367050&r1=1367049&r2=1367050&view=diff
==============================================================================
--- apr/apr/trunk/tables/apr_tables.c (original)
+++ apr/apr/trunk/tables/apr_tables.c Mon Jul 30 09:47:03 2012
@@ -730,15 +730,18 @@ APR_DECLARE(void) apr_table_mergen(apr_t
     apr_table_entry_t *next_elt;
     apr_table_entry_t *end_elt;
     apr_uint32_t checksum;
+    apr_pool_t *pool;
     int hash;
 
 #if APR_POOL_DEBUG
     {
-	if (!apr_pool_is_ancestor(apr_pool_find(key), t->a.pool)) {
+	pool = apr_pool_find(key);
+	if ((pool != key) && (!apr_pool_is_ancestor(pool, t->a.pool))) {
 	    fprintf(stderr, "apr_table_mergen: key not in ancestor pool of t\n");
 	    abort();
 	}
-	if (!apr_pool_is_ancestor(apr_pool_find(val), t->a.pool)) {
+	pool = apr_pool_find(val);
+	if ((pool != val) && (!apr_pool_is_ancestor(pool, t->a.pool))) {
 	    fprintf(stderr, "apr_table_mergen: val not in ancestor pool of t\n");
 	    abort();
 	}