summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjlib/src/pj/pool_buf.c9
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, &param);