about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libmain/stack.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libmain/stack.cc b/src/libmain/stack.cc
index 57b6a197c0f0..ab3baf62c3d4 100644
--- a/src/libmain/stack.cc
+++ b/src/libmain/stack.cc
@@ -52,7 +52,8 @@ void detectStackOverflow()
        delivered when we're out of stack space. */
     stack_t stack;
     stack.ss_size = 4096 * 4 + MINSIGSTKSZ;
-    stack.ss_sp = new char[stack.ss_size];
+    static auto stackBuf = std::make_unique<std::vector<char>>(stack.ss_size);
+    stack.ss_sp = stackBuf->data();
     if (!stack.ss_sp) throw Error("cannot allocate alternative stack");
     stack.ss_flags = 0;
     if (sigaltstack(&stack, 0) == -1) throw SysError("cannot set alternative stack");