summaryrefslogtreecommitdiff
path: root/buckets
diff options
context:
space:
mode:
authorStefan Fritsch <sf@apache.org>2012-10-27 22:56:41 +0000
committerStefan Fritsch <sf@apache.org>2012-10-27 22:56:41 +0000
commite577161bd42a58bbff8c560ecbe00dc79c3b5184 (patch)
tree595112f3664bff5218c3313dea5d43c8fa6a8652 /buckets
parentaa8ba3d9d5dea490d376494b4f50b0e7c8480d11 (diff)
downloadapr-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.c11
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);