summaryrefslogtreecommitdiff
path: root/pjlib/src/pj
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2010-01-29 11:20:43 +0000
committerBenny Prijono <bennylp@teluu.com>2010-01-29 11:20:43 +0000
commitf3d584101fb40816718221330df4a729080340f9 (patch)
tree6e72ab8abaea21fd2da18b45e23008f9c880e132 /pjlib/src/pj
parent8e54a92b6eb6302761fd9a1949086baa26e0007a (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/pj')
-rw-r--r--pjlib/src/pj/pool.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/pjlib/src/pj/pool.c b/pjlib/src/pj/pool.c
index 22df21c6..800b86c6 100644
--- a/pjlib/src/pj/pool.c
+++ b/pjlib/src/pj/pool.c
@@ -31,7 +31,8 @@
# include <pj/pool_i.h>
#endif
-#define LOG(expr) PJ_LOG(6,expr)
+#define LOG(expr) PJ_LOG(6,expr)
+#define ALIGN_PTR(PTR,ALIGNMENT) (PTR + (-(long)(PTR) & (ALIGNMENT-1)))
PJ_DEF_DATA(int) PJ_NO_MEMORY_EXCEPTION;
@@ -71,9 +72,7 @@ static pj_pool_block *pj_pool_create_block( pj_pool_t *pool, pj_size_t size)
block->end = ((unsigned char*)block) + size;
/* Set the start pointer, aligning it as needed */
- block->cur = (unsigned char*)
- (((unsigned long)block->buf + PJ_POOL_ALIGNMENT - 1) &
- ~(PJ_POOL_ALIGNMENT - 1));
+ block->cur = ALIGN_PTR(block->buf, PJ_POOL_ALIGNMENT);
/* Insert in the front of the list. */
pj_list_insert_after(&pool->block_list, block);
@@ -216,9 +215,7 @@ PJ_DEF(pj_pool_t*) pj_pool_create_int( pj_pool_factory *f, const char *name,
block->end = buffer + initial_size;
/* Set the start pointer, aligning it as needed */
- block->cur = (unsigned char*)
- (((unsigned long)block->buf + PJ_POOL_ALIGNMENT - 1) &
- ~(PJ_POOL_ALIGNMENT - 1));
+ block->cur = ALIGN_PTR(block->buf, PJ_POOL_ALIGNMENT);
pj_list_insert_after(&pool->block_list, block);
@@ -262,9 +259,7 @@ static void reset_pool(pj_pool_t *pool)
block = pool->block_list.next;
/* Set the start pointer, aligning it as needed */
- block->cur = (unsigned char*)
- (((unsigned long)block->buf + PJ_POOL_ALIGNMENT - 1) &
- ~(PJ_POOL_ALIGNMENT - 1));
+ block->cur = ALIGN_PTR(block->buf, PJ_POOL_ALIGNMENT);
pool->capacity = block->end - (unsigned char*)pool;
}