about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-04-30 09:27:23 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-04-30 09:27:23 +0000
commit5f13656d7f8529fa8989aef2351fef9e7f43857d (patch)
tree6c99c8dcbde83db11a7333a1976fe1d2ebd1c126 /Src
parent4b635e7f91d0192dbb811986ae1f4eabffc43f76 (diff)
downloadzsh-5f13656d7f8529fa8989aef2351fef9e7f43857d.tar.gz
zsh-5f13656d7f8529fa8989aef2351fef9e7f43857d.tar.xz
zsh-5f13656d7f8529fa8989aef2351fef9e7f43857d.zip
23339: make malloc(0) allocate a byte
Diffstat (limited to 'Src')
-rw-r--r--Src/mem.c18
1 files changed, 17 insertions, 1 deletions
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 */