]> wimlib.net Git - wimlib/commitdiff
wimlib_malloc(): Only malloc(1) if NULL is returned
authorEric Biggers <ebiggers3@gmail.com>
Tue, 13 May 2014 07:38:17 +0000 (02:38 -0500)
committerEric Biggers <ebiggers3@gmail.com>
Tue, 13 May 2014 07:38:17 +0000 (02:38 -0500)
src/util.c

index 8be76594e5125374ae92b564fd9c5640dbdf5834..6cc8cf441fc0abb74d810f7eec1b384939a9f5bc 100644 (file)
@@ -448,11 +448,17 @@ static void *(*wimlib_realloc_func)(void *, size_t) = realloc;
 void *
 wimlib_malloc(size_t size)
 {
-       if (size == 0)
-               size = 1;
-       void *ptr = (*wimlib_malloc_func)(size);
-       if (ptr == NULL)
+       void *ptr;
+
+retry:
+       ptr = (*wimlib_malloc_func)(size);
+       if (unlikely(!ptr)) {
+               if (!size) {
+                       size++;
+                       goto retry;
+               }
                ERROR("memory exhausted");
+       }
        return ptr;
 }