diff --git a/src/object.c b/src/object.c
index 32752ec0f11c83115d0255d842e1ce0f340c23d8..9e61cfb39acd8372d821ea2c600599395e295c79 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 {