summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2010-01-15 11:20:10 +0100
committerWolfgang Denk <wd@denx.de>2010-01-15 13:26:20 +0100
commit2740544881f652566756815dda4da0bcd946e9de (patch)
tree2a76867d094fa88bdfdd6c229fa30ad448dd3123
parentf098337152ca48e135448f5e7836cce938e12bc0 (diff)
downloadu-boot-imx-2740544881f652566756815dda4da0bcd946e9de.zip
u-boot-imx-2740544881f652566756815dda4da0bcd946e9de.tar.gz
u-boot-imx-2740544881f652566756815dda4da0bcd946e9de.tar.bz2
malloc: return NULL if not initialized yet
When malloc() was called before it was properly initialized (as would happen if when used before relocation to RAM) it returned random, non-NULL values, which called all kinds of difficult to debug subsequent errors. Make sure to return NULL when initialization was not done yet. Signed-off-by: Wolfgang Denk <wd@denx.de>
-rw-r--r--common/dlmalloc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index 735b344..205fc40 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -2179,6 +2179,12 @@ Void_t* mALLOc(bytes) size_t bytes;
INTERNAL_SIZE_T nb;
+ /* check if mem_malloc_init() was run */
+ if ((mem_malloc_start == 0) && (mem_malloc_end == 0)) {
+ /* not initialized yet */
+ return 0;
+ }
+
if ((long)bytes < 0) return 0;
nb = request2size(bytes); /* padded request size; */