From 306bc9be5643af7494fa372979ab5fc17157d3c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Fri, 18 Oct 2019 11:01:33 +0200
Subject: [PATCH] Compiler: Make get_name_of_function() survive destructed
 functions.

Fixes remainder of [PIKE-221].
---
 src/las.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/las.c b/src/las.c
index 0d1db036c8..4152355b65 100644
--- a/src/las.c
+++ b/src/las.c
@@ -3150,9 +3150,16 @@ static struct pike_string *get_name_of_function(node *n)
       if(SUBTYPEOF(n->u.sval) == FUNCTION_BUILTIN)
       {
 	name = n->u.sval.u.efun->name;
-      }else{
-	name =
-	  ID_FROM_INT(n->u.sval.u.object->prog, SUBTYPEOF(n->u.sval))->name;
+      } else {
+	struct program *p = n->u.sval.u.object->prog;
+	if (!p) {
+	  p = id_to_program(n->u.sval.u.object->program_id);
+	}
+	if (p) {
+	  name = ID_FROM_INT(p, SUBTYPEOF(n->u.sval))->name;
+	} else {
+	  MAKE_CONST_STRING(name, "function in destructed object");
+	}
       }
       break;
 
-- 
GitLab