Returning NULL from mem_heap_alloc_block if requested block size is zero.

This commit is contained in:
Ruben Ayrapetyan
2014-12-18 13:26:42 +03:00
parent 9b1fff1d8b
commit 1e0eea3d73
2 changed files with 18 additions and 7 deletions
+11 -5
View File
@@ -88,14 +88,14 @@ extern void mem_heap_stats_reset_peak (void);
*/
#define MEM_DEFINE_LOCAL_ARRAY(var_name, number, type) \
{ \
type *var_name = ((number > 0) \
? mem_heap_alloc_block ((number) * sizeof (type), MEM_HEAP_ALLOC_SHORT_TERM) \
: NULL); \
size_t var_name ## ___size = (size_t) (number) * sizeof (type); \
type *var_name = mem_heap_alloc_block (var_name ## ___size, MEM_HEAP_ALLOC_SHORT_TERM); \
\
if (var_name == NULL) \
if (number > 0 \
&& var_name == NULL) \
{ \
jerry_exit (ERR_OUT_OF_MEMORY); \
} \
}
/**
* Free the previously defined local array variable, freeing corresponding block on the heap,
@@ -104,8 +104,14 @@ extern void mem_heap_stats_reset_peak (void);
#define MEM_FINALIZE_LOCAL_ARRAY(var_name) \
if (var_name != NULL) \
{ \
JERRY_ASSERT (var_name ## ___size != 0); \
\
mem_heap_free_block (var_name); \
} \
else \
{ \
JERRY_ASSERT (var_name ## ___size == 0); \
} \
}
/**