diff options
Diffstat (limited to 'pjlib/src/pj/pool_buf.c')
-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); |