summaryrefslogtreecommitdiff
path: root/tables
diff options
context:
space:
mode:
authorRuediger Pluem <rpluem@apache.org>2012-07-30 09:47:03 +0000
committerRuediger Pluem <rpluem@apache.org>2012-07-30 09:47:03 +0000
commitf15c5b610ac910340e83a4dd649395b7e591739a (patch)
tree6741b74eabdf6642b0e558be4604d30c143d81f8 /tables
parent8c1e7541b0cf65e62ecfae481e0172869476fc11 (diff)
downloadapr-f15c5b610ac910340e83a4dd649395b7e591739a.tar.gz
* 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. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1367050 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tables')
-rw-r--r--tables/apr_tables.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/tables/apr_tables.c b/tables/apr_tables.c
index 51b23407c..683f48a16 100644
--- a/tables/apr_tables.c
+++ b/tables/apr_tables.c
@@ -730,15 +730,18 @@ APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key,
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();
}