mojoshader.c
changeset 1182 179ffe99c57f
parent 1181 b873f3b0f838
child 1183 ec44ee868688
--- a/mojoshader.c	Fri Oct 13 00:47:22 2017 -0400
+++ b/mojoshader.c	Fri May 04 17:45:20 2018 -0400
@@ -307,9 +307,10 @@
     ctx->isfail = ctx->out_of_memory = 1;
 } // out_of_memory
 
+static char zeromalloc = 0;
 static inline void *Malloc(Context *ctx, const size_t len)
 {
-    void *retval = ctx->malloc((int) len, ctx->malloc_data);
+    void *retval = (len == 0) ? &zeromalloc : ctx->malloc((int) len, ctx->malloc_data);
     if (retval == NULL)
         out_of_memory(ctx);
     return retval;
@@ -325,7 +326,8 @@
 
 static inline void Free(Context *ctx, void *ptr)
 {
-    ctx->free(ptr, ctx->malloc_data);
+    if ((ptr != &zeromalloc) && (ptr != NULL))
+        ctx->free(ptr, ctx->malloc_data);
 } // Free
 
 static void * MOJOSHADERCALL MallocBridge(int bytes, void *data)