diff options
author | Stefan Fritsch <sf@apache.org> | 2012-10-27 22:56:41 +0000 |
---|---|---|
committer | Stefan Fritsch <sf@apache.org> | 2012-10-27 22:56:41 +0000 |
commit | e577161bd42a58bbff8c560ecbe00dc79c3b5184 (patch) | |
tree | 595112f3664bff5218c3313dea5d43c8fa6a8652 /buckets | |
parent | aa8ba3d9d5dea490d376494b4f50b0e7c8480d11 (diff) | |
download | apr-e577161bd42a58bbff8c560ecbe00dc79c3b5184.tar.gz |
If out of mem, abort instead of crashing. Use the pool's abort function
if it has one.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1402907 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'buckets')
-rw-r--r-- | buckets/apr_buckets_alloc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/buckets/apr_buckets_alloc.c b/buckets/apr_buckets_alloc.c index 08c350cdb..466eb9f40 100644 --- a/buckets/apr_buckets_alloc.c +++ b/buckets/apr_buckets_alloc.c @@ -57,11 +57,14 @@ APR_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p) apr_allocator_t *allocator; apr_bucket_alloc_t *list; - if (apr_allocator_create(&allocator) != APR_SUCCESS) { - abort(); + if (apr_allocator_create(&allocator) != APR_SUCCESS + || (list = apr_bucket_alloc_create_ex(allocator)) == NULL) { + apr_abortfunc_t fn = apr_pool_abort_get(p); + if (fn) + (fn)(APR_ENOMEM); + else + abort(); } - - list = apr_bucket_alloc_create_ex(allocator); list->pool = p; apr_pool_cleanup_register(list->pool, list, alloc_cleanup, apr_pool_cleanup_null); |