diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2023-12-30 17:29:29 +0700 |
---|---|---|
committer | fixeria <vyanitskiy@sysmocom.de> | 2024-01-03 23:05:16 +0000 |
commit | 21b297bee9b1354b718c4701f6bebc4521742396 (patch) | |
tree | b68994e2c5a4c1e91d9850c3e6ba47cf288f8c24 /src/pseudotalloc | |
parent | 3c5518c0b389bf25bd2b23b190a674cafacc797e (diff) |
pseudotalloc: add talloc_memdup(), use it in talloc_strdup()
Change-Id: Ifcf377c3496a9e75404932a1aaba7d74888cf4cf
Diffstat (limited to 'src/pseudotalloc')
-rw-r--r-- | src/pseudotalloc/pseudotalloc.c | 22 | ||||
-rw-r--r-- | src/pseudotalloc/talloc.h | 3 |
2 files changed, 13 insertions, 12 deletions
diff --git a/src/pseudotalloc/pseudotalloc.c b/src/pseudotalloc/pseudotalloc.c index 25425e57..895c6dd0 100644 --- a/src/pseudotalloc/pseudotalloc.c +++ b/src/pseudotalloc/pseudotalloc.c @@ -55,21 +55,21 @@ void talloc_set_name_const(const void *ptr, const char *name) { } -char *talloc_strdup(const void *context, const char *p) +void *talloc_memdup(const void *ctx, const void *p, size_t size) { - char *ptr; - size_t len; + void *ptr; - if (!p) - return NULL; - len = strlen(p); + ptr = talloc_size(ctx, size); + if (ptr && p) + memcpy(ptr, p, size); + return ptr; +} - ptr = talloc_size(context, len+1); - if (!ptr) +char *talloc_strdup(const void *ctx, const char *p) +{ + if (!p) return NULL; - memcpy(ptr, p, len+1); - - return ptr; + return talloc_memdup(ctx, p, strlen(p) + 1); } void *talloc_pool(const void *context, size_t size) diff --git a/src/pseudotalloc/talloc.h b/src/pseudotalloc/talloc.h index d257a981..38935991 100644 --- a/src/pseudotalloc/talloc.h +++ b/src/pseudotalloc/talloc.h @@ -50,7 +50,8 @@ int _talloc_free(void *ptr, const char *location); void *talloc_named_const(const void *context, size_t size, const char *name); void *talloc_named(const void *context, size_t size, const char *fmt, ...); void talloc_set_name_const(const void *ptr, const char *name); -char *talloc_strdup(const void *t, const char *p); +void *talloc_memdup(const void *ctx, const void *p, size_t size); +char *talloc_strdup(const void *ctx, const char *p); void *talloc_pool(const void *context, size_t size); #define talloc_array(ctx, type, count) (type *)_talloc_array(ctx, sizeof(type), count, #type) void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name); |