From e816e2b3382288e85f6139dadd5b02671ef0847d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 9 Aug 2016 16:37:34 +0200
Subject: [PATCH] Runtime: exit_on_error() should only exit on actual errors.

Survive eg THREAD_EXIT being thrown while handling an error.
---
 src/error.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/error.c b/src/error.c
index 6fe796fea8..6252ca7a8e 100644
--- a/src/error.c
+++ b/src/error.c
@@ -401,6 +401,14 @@ static int inhibit_errors = 0;
 PMOD_EXPORT void exit_on_error(const void *msg)
 {
   ONERROR tmp;
+
+  if (throw_severity > THROW_ERROR) {
+    /* THROW_THREAD_EXIT or THROW_EXIT or similar.
+     *
+     * Let it continue without complaining.
+     */
+    return;
+  }
   SET_ONERROR(tmp,fatal_on_error,"Fatal in exit_on_error!");
   d_flag=0;
   Pike_interpreter.trace_level = 0;
-- 
GitLab