diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-05-29 11:33:13 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-05-29 11:33:13 +0000 |
commit | 7a4c67e51902161c8011599f0d9a181e1aae2908 (patch) | |
tree | 3205d92dab2975984537395ba9b27f811749ef71 | |
parent | 2618733248d984c629eeb313c80e084dd26531c6 (diff) |
Fixed ticket #310: Memory alignment problem in pool_buf (thanks Esbjörn Dominique)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1316 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjlib/src/pj/pool_buf.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/pjlib/src/pj/pool_buf.c b/pjlib/src/pj/pool_buf.c index 08885ea6..fbafec08 100644 --- a/pjlib/src/pj/pool_buf.c +++ b/pjlib/src/pj/pool_buf.c @@ -81,6 +81,7 @@ PJ_DEF(pj_pool_t*) pj_pool_create_on_buf(const char *name, pj_size_t size) { struct creation_param param; + long align_diff; PJ_ASSERT_RETURN(buf && size, NULL); @@ -90,6 +91,14 @@ PJ_DEF(pj_pool_t*) pj_pool_create_on_buf(const char *name, is_initialized = 1; } + /* Check and align buffer */ + align_diff = (long)buf; + if (align_diff & (PJ_POOL_ALIGNMENT-1)) { + align_diff &= (PJ_POOL_ALIGNMENT-1); + buf = (void*) (((char*)buf) + align_diff); + size -= align_diff; + } + param.stack_buf = buf; param.size = size; pj_thread_local_set(tls, ¶m); |