diff --git a/server/include/utils.h b/server/include/utils.h index 15a5a5c20..4aa77b72d 100644 --- a/server/include/utils.h +++ b/server/include/utils.h @@ -111,6 +111,9 @@ cpu_set_t to_cpu_set(int set); /** Allocate and initialize memory. */ void * alloc(size_t bytes); +/** Allocate and copy memory. */ +void * memdup(const void *src, size_t bytes); + /** Call quit() in the main thread. */ void die(); diff --git a/server/src/utils.c b/server/src/utils.c index 4e53e581a..aab070f58 100644 --- a/server/src/utils.c +++ b/server/src/utils.c @@ -135,3 +135,12 @@ void * alloc(size_t bytes) return p; } + +void * memdup(const void *src, size_t bytes) +{ + void *dst = alloc(bytes); + + memcpy(dst, src, bytes); + + return dst; +} \ No newline at end of file