summaryrefslogtreecommitdiffstats
path: root/src/mem_pool.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem_pool.c')
-rw-r--r--src/mem_pool.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/mem_pool.c b/src/mem_pool.c
index 66d9ace19..df4c544f9 100644
--- a/src/mem_pool.c
+++ b/src/mem_pool.c
@@ -200,6 +200,16 @@ memory_pool_alloc0 (memory_pool_t *pool, memory_pool_ssize_t size)
return pointer;
}
+void *
+memory_pool_alloc0_shared (memory_pool_t *pool, memory_pool_ssize_t size)
+{
+ void *pointer = memory_pool_alloc_shared (pool, size);
+ if (pointer) {
+ bzero (pointer, size);
+ }
+ return pointer;
+}
+
char *
memory_pool_strdup (memory_pool_t *pool, const char *src)
{
@@ -212,10 +222,29 @@ memory_pool_strdup (memory_pool_t *pool, const char *src)
len = strlen (src);
newstr = memory_pool_alloc (pool, len + 1);
- memcpy (newstr, src, len + 1);
+ memcpy (newstr, src, len);
+ newstr[len] = '\0';
+ return newstr;
+}
+
+char *
+memory_pool_strdup_shared (memory_pool_t *pool, const char *src)
+{
+ memory_pool_ssize_t len;
+ char *newstr;
+
+ if (src == NULL) {
+ return NULL;
+ }
+
+ len = strlen (src);
+ newstr = memory_pool_alloc_shared (pool, len + 1);
+ memcpy (newstr, src, len);
+ newstr[len] = '\0';
return newstr;
}
+
void *
memory_pool_alloc_shared (memory_pool_t *pool, memory_pool_ssize_t size)
{