Author: rhuijben
Date: Tue Nov  3 12:12:00 2015
New Revision: 1712270

URL: http://svn.apache.org/viewvc?rev=1712270&view=rev
Log:
Fix some testsuite issues when running the tests with APR pool debugging.

* buckets/allocator.c
  (PRIVATE_ALLOCATOR_MAX_FREE): Define.
  (serf_bucket_allocator_create): When creating an allocator, set maximum
    amount of free memory to keep.

* test/test_util.c
  (test_setup): Resolve segfault when running with pool debugging.

Modified:
    serf/trunk/buckets/allocator.c
    serf/trunk/buckets/buckets.c
    serf/trunk/test/test_util.c

Modified: serf/trunk/buckets/allocator.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/allocator.c?rev=1712270&r1=1712269&r2=1712270&view=diff
==============================================================================
--- serf/trunk/buckets/allocator.c (original)
+++ serf/trunk/buckets/allocator.c Tue Nov  3 12:12:00 2015
@@ -27,6 +27,8 @@
 #include "serf.h"
 #include "serf_bucket_util.h"
 
+#include "serf_private.h"
+
 
 typedef struct node_header_t {
     apr_size_t size;
@@ -71,6 +73,9 @@ typedef struct node_header_t {
  */
 #define DEBUG_DOUBLE_FREE
 
+/* If we have to create our own allocator, keep this amount of free ram
+   in the allocator before returning memory back to the OS */
+#define PRIVATE_ALLOCATOR_MAX_FREE (4 * 1024 * 1024)
 
 typedef struct read_status_t {
     const serf_bucket_t *bucket;
@@ -136,6 +141,8 @@ serf_bucket_alloc_t *serf_bucket_allocat
         /* This most likely means pools are running in debug mode, create our
          * own allocator to deal with memory ourselves */
         apr_allocator_create(&allocator->allocator);
+        apr_allocator_max_free_set(allocator->allocator,
+                                   PRIVATE_ALLOCATOR_MAX_FREE);
         allocator->own_allocator = 1;
     }
     allocator->unfreed = unfreed;

Modified: serf/trunk/buckets/buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/buckets.c?rev=1712270&r1=1712269&r2=1712270&view=diff
==============================================================================
--- serf/trunk/buckets/buckets.c (original)
+++ serf/trunk/buckets/buckets.c Tue Nov  3 12:12:00 2015
@@ -182,7 +182,7 @@ apr_status_t serf_default_ignore_config(
 {
     return APR_SUCCESS;
 }
-
+it
 /* Fallback type definition to return for buckets that don't implement
    a specific version of the bucket spec */
 static const serf_bucket_type_t fallback_bucket_type =

Modified: serf/trunk/test/test_util.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/test_util.c?rev=1712270&r1=1712269&r2=1712270&view=diff
==============================================================================
--- serf/trunk/test/test_util.c (original)
+++ serf/trunk/test/test_util.c Tue Nov  3 12:12:00 2015
@@ -624,11 +624,16 @@ static int pool_abort_func(int retcode)
 void *test_setup(void *dummy)
 {
     apr_pool_t *test_pool;
+    apr_allocator_t *allocator;
     apr_pool_create(&test_pool, NULL);
     apr_pool_abort_set(pool_abort_func, test_pool);
+
     /* Keep a maximum of 16 MB unused memory inside APR. */
-    apr_allocator_max_free_set(apr_pool_allocator_get(test_pool),
-                               16384 * 1024);
+    allocator = apr_pool_allocator_get(test_pool);
+    if (allocator != NULL)
+      apr_allocator_max_free_set(allocator, 16384 * 1024);
+    /* else: APR pool debugging... leave this to apr */
+
     return initTestCtx(test_pool);
 }
 


Reply via email to