From: Nick Mathewson Date: Tue, 21 Apr 2009 18:47:35 +0000 (+0000) Subject: Add a basic test for set_mem_functions X-Git-Tag: release-2.0.3-alpha~294 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f1855d064a6676a82802b481b75e1eae4aec73f;p=libevent Add a basic test for set_mem_functions svn:r1216 --- diff --git a/test/regress.c b/test/regress.c index 8c3107ff..9dc9ffa7 100644 --- a/test/regress.c +++ b/test/regress.c @@ -1534,6 +1534,56 @@ end: } } +int +check_dummy_mem_ok(void *_mem) +{ + char *mem = _mem; + mem -= 16; + return !memcmp(mem, "{[]}", 16); +} + +static void * +dummy_malloc(size_t len) +{ + char *mem = malloc(len+16); + memcpy(mem, "{[]}", 16); + return mem+16; +} + +static void * +dummy_realloc(void *_mem, size_t len) +{ + char *mem = _mem; + if (!mem) + return dummy_malloc(len); + tt_want(check_dummy_mem_ok(_mem)); + mem -= 16; + mem = realloc(mem, len+16); + return mem+16; +} + +static void +dummy_free(void *_mem) +{ + char *mem = _mem; + tt_want(check_dummy_mem_ok(_mem)); + mem -= 16; + free(mem); +} + +static void +test_mm_functions(void *arg) +{ + struct event_base *b = NULL; + event_set_mem_functions(dummy_malloc, dummy_realloc, dummy_free); + b = event_base_new(); + tt_assert(b); + tt_assert(check_dummy_mem_ok(b)); +end: + if (b) + event_base_free(b); +} + struct testcase_t main_testcases[] = { /* Some converted-over tests */ { "methods", test_methods, TT_FORK, NULL, NULL }, @@ -1564,6 +1614,7 @@ struct testcase_t main_testcases[] = { { "event_once", test_event_once, TT_ISOLATED, &basic_setup, NULL }, { "event_pending", test_event_pending, TT_ISOLATED, &basic_setup, NULL }, + { "mm_functions", test_mm_functions, TT_FORK, NULL, NULL }, #ifndef WIN32 LEGACY(fork, TT_ISOLATED),