diff options
author | Benny Prijono <bennylp@teluu.com> | 2010-01-29 11:20:43 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2010-01-29 11:20:43 +0000 |
commit | f3d584101fb40816718221330df4a729080340f9 (patch) | |
tree | 6e72ab8abaea21fd2da18b45e23008f9c880e132 /pjlib/src/pjlib-test | |
parent | 8e54a92b6eb6302761fd9a1949086baa26e0007a (diff) |
More ticket #1037:
- bug in aligning pointer if sizeof(long) is less than sizeof(void*). Thanks John Ridges for pointing this out
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3082 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pjlib-test')
-rw-r--r-- | pjlib/src/pjlib-test/pool.c | 104 |
1 files changed, 42 insertions, 62 deletions
diff --git a/pjlib/src/pjlib-test/pool.c b/pjlib/src/pjlib-test/pool.c index 930e552e..21b2205a 100644 --- a/pjlib/src/pjlib-test/pool.c +++ b/pjlib/src/pjlib-test/pool.c @@ -84,51 +84,41 @@ static int pool_alignment_test(void) { pj_pool_t *pool; void *ptr; + enum { MEMSIZE = 64, LOOP = 100 }; + unsigned i; PJ_LOG(3,("test", "...alignment test")); - pool = pj_pool_create(mem, NULL, PJ_POOL_SIZE+64, 64, NULL); + pool = pj_pool_create(mem, NULL, PJ_POOL_SIZE+MEMSIZE, MEMSIZE, NULL); if (!pool) return -300; #define IS_ALIGNED(p) ((((unsigned long)p) & (PJ_POOL_ALIGNMENT-1)) == 0) - /* Test first allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -310; - } - - /* Test subsequent allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -320; - } + for (i=0; i<LOOP; ++i) { + /* Test first allocation */ + ptr = pj_pool_alloc(pool, 1); + if (!IS_ALIGNED(ptr)) { + pj_pool_release(pool); + return -310; + } - /* Test allocation after new block is created */ - ptr = pj_pool_alloc(pool, 127); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -330; - } + /* Test subsequent allocation */ + ptr = pj_pool_alloc(pool, 1); + if (!IS_ALIGNED(ptr)) { + pj_pool_release(pool); + return -320; + } - /* Reset the pool */ - pj_pool_reset(pool); + /* Test allocation after new block is created */ + ptr = pj_pool_alloc(pool, MEMSIZE*2+1); + if (!IS_ALIGNED(ptr)) { + pj_pool_release(pool); + return -330; + } - /* Retest first allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -340; - } - - /* Retest subsequent allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -350; + /* Reset the pool */ + pj_pool_reset(pool); } /* Done */ @@ -141,8 +131,10 @@ static int pool_alignment_test(void) static int pool_buf_alignment_test(void) { pj_pool_t *pool; - char buf[256]; + char buf[512]; void *ptr; + enum { LOOP = 100 }; + unsigned i; PJ_LOG(3,("test", "...pool_buf alignment test")); @@ -150,35 +142,23 @@ static int pool_buf_alignment_test(void) if (!pool) return -400; - /* Test first allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -410; - } - - /* Test subsequent allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -420; - } - - /* Reset the pool */ - pj_pool_reset(pool); + for (i=0; i<LOOP; ++i) { + /* Test first allocation */ + ptr = pj_pool_alloc(pool, 1); + if (!IS_ALIGNED(ptr)) { + pj_pool_release(pool); + return -410; + } - /* Retest first allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -430; - } + /* Test subsequent allocation */ + ptr = pj_pool_alloc(pool, 1); + if (!IS_ALIGNED(ptr)) { + pj_pool_release(pool); + return -420; + } - /* Retest subsequent allocation */ - ptr = pj_pool_alloc(pool, 1); - if (!IS_ALIGNED(ptr)) { - pj_pool_release(pool); - return -440; + /* Reset the pool */ + pj_pool_reset(pool); } /* Done */ |