From fdcafad3e1b57ea790af841d4dd286817839d3d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Wed, 10 Aug 2016 15:28:49 +0200
Subject: [PATCH] Runtime: Improved handling of handle_error() failing at
 cleaup time.

handle_error() throwing errors at cleanup time now generates a
"Error in handle_error in master object!" with a meaningful
backtrace instead of a "No error recovery context.".
---
 src/object.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/object.c b/src/object.c
index 32752ec0f1..9e61cfb39a 100644
--- a/src/object.c
+++ b/src/object.c
@@ -797,7 +797,10 @@ static void call_destroy(struct object *o, enum object_destruct_reason reason)
 	  UNSETJMP (jmp);
 	  move_svalue (&throw_value, &err);
 	}
-	call_handle_error();
+	if (!SETJMP(jmp)) {
+	  call_handle_error();
+	}
+	UNSETJMP(jmp);
       }
 
       else {
-- 
GitLab