diff --git a/src/las.c b/src/las.c
index 0d1db036c835f21031dab2394ecdf94c16824ce2..4152355b654f193c4a4e8aa42a386f5ccd5be9c3 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;