diff --git a/src/system_allocator.c b/src/system_allocator.c
index b34810fa3ba29db6de3c0aa43e74fa29f9aed77b..f9dd291aebb4aec066e3ed02fd249f60c2f73be7 100644
--- a/src/system_allocator.c
+++ b/src/system_allocator.c
@@ -7,6 +7,9 @@
 static void* system_alloc(HAllocator *allocator, size_t size) {
   
   void* ptr = malloc(size + sizeof(size_t));
+  if (!ptr) {
+    return NULL;
+  }
 #ifdef DEBUG__MEMFILL
   memset(ptr, DEBUG__MEMFILL, size + sizeof(size_t));
 #endif
@@ -15,9 +18,13 @@ static void* system_alloc(HAllocator *allocator, size_t size) {
 }
 
 static void* system_realloc(HAllocator *allocator, void* ptr, size_t size) {
-  if (ptr == NULL)
+  if (!ptr) {
     return system_alloc(allocator, size);
+  }
   ptr = realloc(ptr - sizeof(size_t), size + sizeof(size_t));
+  if (!ptr) {
+    return NULL;
+  }
   *(size_t*)ptr = size;
 #ifdef DEBUG__MEMFILL
   size_t old_size = *(size_t*)ptr;
@@ -28,8 +35,9 @@ static void* system_realloc(HAllocator *allocator, void* ptr, size_t size) {
 }
 
 static void system_free(HAllocator *allocator, void* ptr) {
-  if (ptr != NULL)
+  if (ptr) {
     free(ptr - sizeof(size_t));
+  }
 }
 
 HAllocator system_allocator = {