mojoshader.c
changeset 1188 25000edc0176
parent 1184 62922fc6abe9
child 1190 51de95edd697
equal deleted inserted replaced
1187:0687a8d78a54 1188:25000edc0176
   305 static inline void out_of_memory(Context *ctx)
   305 static inline void out_of_memory(Context *ctx)
   306 {
   306 {
   307     ctx->isfail = ctx->out_of_memory = 1;
   307     ctx->isfail = ctx->out_of_memory = 1;
   308 } // out_of_memory
   308 } // out_of_memory
   309 
   309 
   310 static char zeromalloc = 0;
       
   311 static inline void *Malloc(Context *ctx, const size_t len)
   310 static inline void *Malloc(Context *ctx, const size_t len)
   312 {
   311 {
   313     void *retval = (len == 0) ? &zeromalloc : ctx->malloc((int) len, ctx->malloc_data);
   312     void *retval = ctx->malloc((int) len, ctx->malloc_data);
   314     if (retval == NULL)
   313     if (retval == NULL)
   315         out_of_memory(ctx);
   314         out_of_memory(ctx);
   316     return retval;
   315     return retval;
   317 } // Malloc
   316 } // Malloc
   318 
   317 
   324     return retval;
   323     return retval;
   325 } // StrDup
   324 } // StrDup
   326 
   325 
   327 static inline void Free(Context *ctx, void *ptr)
   326 static inline void Free(Context *ctx, void *ptr)
   328 {
   327 {
   329     if ((ptr != &zeromalloc) && (ptr != NULL))
   328     ctx->free(ptr, ctx->malloc_data);
   330         ctx->free(ptr, ctx->malloc_data);
       
   331 } // Free
   329 } // Free
   332 
   330 
   333 static void * MOJOSHADERCALL MallocBridge(int bytes, void *data)
   331 static void * MOJOSHADERCALL MallocBridge(int bytes, void *data)
   334 {
   332 {
   335     return Malloc((Context *) data, (size_t) bytes);
   333     return Malloc((Context *) data, (size_t) bytes);