diff options
Diffstat (limited to 'src/memory.c')
-rw-r--r-- | src/memory.c | 53 |
1 files changed, 21 insertions, 32 deletions
diff --git a/src/memory.c b/src/memory.c index f2d24f70a1..2ec1b179ea 100644 --- a/src/memory.c +++ b/src/memory.c @@ -43,17 +43,6 @@ #include "os/os.h" static void try_to_free_memory(); -static void *xmallocz(size_t size); - -/// Allocates (len + 1) bytes of memory, duplicates `len` bytes of -/// `data` to the allocated memory, zero terminates the allocated memory, -/// and returns a pointer to the allocated memory. If the allocation fails, -/// the program dies. -/// -/// @see {xmalloc} -/// @param data Pointer to the data that will be copied -/// @param len number of bytes that will be copied -static void *xmemdupz(const void *data, size_t len); /* * Note: if unsigned is 16 bits we can only allocate up to 64K with alloc(). @@ -155,6 +144,27 @@ void *xrealloc(void *ptr, size_t size) return ret; } +void *xmallocz(size_t size) +{ + size_t total_size = size + 1; + void *ret; + + if (total_size < size) { + OUT_STR("Vim: Data too large to fit into virtual memory space\n"); + preserve_exit(); + } + + ret = xmalloc(total_size); + ((char*)ret)[size] = 0; + + return ret; +} + +void *xmemdupz(const void *data, size_t len) +{ + return memcpy(xmallocz(len), data, len); +} + char * xstrdup(const char *str) { char *ret = strdup(str); @@ -350,24 +360,3 @@ void free_all_mem(void) #endif -static void *xmallocz(size_t size) -{ - size_t total_size = size + 1; - void *ret; - - if (total_size < size) { - OUT_STR("Vim: Data too large to fit into virtual memory space\n"); - preserve_exit(); - } - - ret = xmalloc(total_size); - ((char*)ret)[size] = 0; - - return ret; -} - -static void *xmemdupz(const void *data, size_t len) -{ - return memcpy(xmallocz(len), data, len); -} - |