X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Futil.c;h=87dd3c50f8585d92bb984040185d36d7f7353348;hp=847510616de12084bfda260de8c13b8bcd835d11;hb=4b8dbcb1723bacdd692ea57184cb49ce3d2b7774;hpb=393cdb4950dd890875f7fe049800b33721a46775 diff --git a/src/util.c b/src/util.c index 84751061..87dd3c50 100644 --- a/src/util.c +++ b/src/util.c @@ -389,6 +389,8 @@ static const tchar *error_strings[] = { = T("The requested operation is unsupported"), [WIMLIB_ERR_VOLUME_LACKS_FEATURES] = T("The volume did not support a feature necessary to complete the operation"), + [WIMLIB_ERR_WIM_IS_MARKED_READONLY] + = T("The WIM is marked as read-only"), [WIMLIB_ERR_WRITE] = T("Failed to write data to a file"), [WIMLIB_ERR_XML] @@ -439,7 +441,7 @@ void * wimlib_calloc(size_t nmemb, size_t size) { size_t total_size = nmemb * size; - void *p = (*wimlib_malloc_func)(total_size); + void *p = MALLOC(total_size); if (p) p = memset(p, 0, total_size); return p; @@ -452,9 +454,9 @@ wimlib_strdup(const char *str) char *p; size = strlen(str); - p = (*wimlib_malloc_func)(size + 1); + p = MALLOC(size + 1); if (p) - memcpy(p, str, size + 1); + p = memcpy(p, str, size + 1); return p; } @@ -466,7 +468,7 @@ wimlib_wcsdup(const wchar_t *str) wchar_t *p; size = wcslen(str); - p = (*wimlib_malloc_func)((size + 1) * sizeof(wchar_t)); + p = MALLOC((size + 1) * sizeof(wchar_t)); if (p) p = wmemcpy(p, str, size + 1); return p; @@ -475,6 +477,15 @@ wimlib_wcsdup(const wchar_t *str) #endif /* ENABLE_CUSTOM_MEMORY_ALLOCATOR */ +void * +memdup(const void *mem, size_t size) +{ + void *ptr = MALLOC(size); + if (ptr) + ptr = memcpy(ptr, mem, size); + return ptr; +} + WIMLIBAPI int wimlib_set_memory_allocator(void *(*malloc_func)(size_t), void (*free_func)(void *),