From 6ed43229b4f87724ade863292d1f26b9e90fdeca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 5 Feb 2013 16:48:44 +0100
Subject: [PATCH] Interpreter: Fixed some opcodes when executing in a
 destructed object.

Fixed opcodes are: F_MARK_AND_EXTERNAL, F_EXTERNAL_LVALUE,
F_EXTERNAL and F_THIS.
---
 src/interpret_functions.h | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/interpret_functions.h b/src/interpret_functions.h
index 62d9753c1a..2d63e1537b 100644
--- a/src/interpret_functions.h
+++ b/src/interpret_functions.h
@@ -371,8 +371,7 @@ OPCODE2_TAIL(F_MARK_AND_EXTERNAL, "mark & external", I_UPDATE_SP|I_UPDATE_M_SP,
 
     loc.o=Pike_fp->current_object;
     loc.parent_identifier=Pike_fp->fun;
-    if (loc.o->prog)
-      loc.inherit=INHERIT_FROM_INT(loc.o->prog, loc.parent_identifier);
+    loc.inherit=Pike_fp->context;
     find_external_context(&loc, arg2);
 
     DO_IF_DEBUG({
@@ -400,8 +399,7 @@ OPCODE2(F_EXTERNAL_LVALUE, "& external", I_UPDATE_SP, {
 
   loc.o=Pike_fp->current_object;
   loc.parent_identifier=Pike_fp->fun;
-  if (loc.o->prog)
-    loc.inherit=INHERIT_FROM_INT(loc.o->prog, loc.parent_identifier);
+  loc.inherit=Pike_fp->context;
   find_external_context(&loc, arg2);
 
   if (!loc.o->prog)
@@ -2757,8 +2755,7 @@ OPCODE2(F_THIS, "this", I_UPDATE_SP, {
 
     loc.o = Pike_fp->current_object;
     loc.parent_identifier = Pike_fp->fun;
-    if (loc.o->prog)
-      loc.inherit = INHERIT_FROM_INT(loc.o->prog, loc.parent_identifier);
+    loc.inherit = Pike_fp->context;
     find_external_context(&loc, arg1);
 
     DO_IF_DEBUG({
-- 
GitLab