f686d7
From d2f33b7005540aef5ce79479d598cdcc10d397f9 Mon Sep 17 00:00:00 2001
f686d7
From: "Barton E. Schaefer" <schaefer@zsh.org>
f686d7
Date: Thu, 24 Jul 2014 08:45:16 -0700
f686d7
Subject: [PATCH] 32853: redefine VARARR() to use heap rather than stack
f686d7
 allocation
f686d7
f686d7
Upstream-commit: 2f0efe9f592255d0d83c0929423cc397bb1ebfa4
f686d7
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
f686d7
---
f686d7
 Src/mem.c        | 5 ++++-
f686d7
 Src/zsh_system.h | 5 +++++
f686d7
 2 files changed, 9 insertions(+), 1 deletion(-)
f686d7
f686d7
diff --git a/Src/mem.c b/Src/mem.c
f686d7
index 5275c6c..c4745a5 100644
f686d7
--- a/Src/mem.c
f686d7
+++ b/Src/mem.c
f686d7
@@ -856,7 +856,10 @@ zrealloc(void *ptr, size_t size)
f686d7
 	ptr = NULL;
f686d7
     } else {
f686d7
 	/* If ptr is NULL, then behave like malloc */
f686d7
-	ptr = malloc(size);
f686d7
+	if (!(ptr = (void *) malloc(size))) {
f686d7
+	    zerr("fatal error: out of memory");
f686d7
+	    exit(1);
f686d7
+	}
f686d7
     }
f686d7
     unqueue_signals();
f686d7
 
f686d7
diff --git a/Src/zsh_system.h b/Src/zsh_system.h
f686d7
index f385330..427c25f 100644
f686d7
--- a/Src/zsh_system.h
f686d7
+++ b/Src/zsh_system.h
f686d7
@@ -286,11 +286,16 @@ struct timezone {
f686d7
 # include <limits.h>
f686d7
 #endif
f686d7
 
f686d7
+#ifdef USE_STACK_ALLOCATION
f686d7
+#warning compiling with USE_STACK_ALLOCATION
f686d7
 #ifdef HAVE_VARIABLE_LENGTH_ARRAYS
f686d7
 # define VARARR(X,Y,Z)	X (Y)[Z]
f686d7
 #else
f686d7
 # define VARARR(X,Y,Z)	X *(Y) = (X *) alloca(sizeof(X) * (Z))
f686d7
 #endif
f686d7
+#else
f686d7
+# define VARARR(X,Y,Z)	X *(Y) = (X *) zhalloc(sizeof(X) * (Z))
f686d7
+#endif
f686d7
 
f686d7
 /* we should handle unlimited sizes from pathconf(_PC_PATH_MAX) */
f686d7
 /* but this is too much trouble                                 */
f686d7
-- 
f686d7
2.1.0
f686d7