From 5f13656d7f8529fa8989aef2351fef9e7f43857d Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 30 Apr 2007 09:27:23 +0000 Subject: 23339: make malloc(0) allocate a byte --- Src/mem.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'Src/mem.c') diff --git a/Src/mem.c b/Src/mem.c index afc008cd7..448c4aad9 100644 --- a/Src/mem.c +++ b/Src/mem.c @@ -830,10 +830,26 @@ malloc(MALLOC_ARG_T size) #endif /* some systems want malloc to return the highest valid address plus one - if it is called with an argument of zero */ + if it is called with an argument of zero. + + TODO: really? Suppose we allocate more memory, so + that this is now in bounds, then a more rational application + that thinks it can free() anything it malloc'ed, even + of zero length, calls free for it? Aren't we in big + trouble? Wouldn't it be safer just to allocate some + memory anyway? + + If the above comment is really correct, then at least + we need to check in free() if we're freeing memory + at m_high. + */ if (!size) +#if 1 + size = 1; +#else return (MALLOC_RET_T) m_high; +#endif queue_signals(); /* just queue signals rather than handling them */ -- cgit 1.4.1