summaryrefslogtreecommitdiffstats
path: root/contrib/apr-util/buckets/apr_buckets_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/apr-util/buckets/apr_buckets_alloc.c')
-rw-r--r--contrib/apr-util/buckets/apr_buckets_alloc.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/contrib/apr-util/buckets/apr_buckets_alloc.c b/contrib/apr-util/buckets/apr_buckets_alloc.c
index 60f42de..15baa33 100644
--- a/contrib/apr-util/buckets/apr_buckets_alloc.c
+++ b/contrib/apr-util/buckets/apr_buckets_alloc.c
@@ -65,12 +65,20 @@ APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p)
/* may be NULL for debug mode. */
if (allocator == NULL) {
if (apr_allocator_create(&allocator) != APR_SUCCESS) {
+ apr_abortfunc_t fn = apr_pool_abort_get(p);
+ if (fn)
+ (fn)(APR_ENOMEM);
abort();
}
}
#endif
-
list = apr_bucket_alloc_create_ex(allocator);
+ if (list == NULL) {
+ apr_abortfunc_t fn = apr_pool_abort_get(p);
+ if (fn)
+ (fn)(APR_ENOMEM);
+ abort();
+ }
list->pool = p;
apr_pool_cleanup_register(list->pool, list, alloc_cleanup,
apr_pool_cleanup_null);
@@ -131,6 +139,7 @@ APU_DECLARE_NONSTD(void *) apr_bucket_alloc(apr_size_t size,
if (endp >= active->endp) {
list->blocks = apr_allocator_alloc(list->allocator, ALLOC_AMT);
if (!list->blocks) {
+ list->blocks = active;
return NULL;
}
list->blocks->next = active;
OpenPOWER on IntegriCloud