From 4dbbd2bf575cdea49fb2f03c713a1ad39d7622d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Fri, 21 Jan 2011 12:53:47 +0100
Subject: [PATCH] Builtin._get_setter() now knows about subtyped objects.

---
 src/builtin.cmod | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/builtin.cmod b/src/builtin.cmod
index 9ad0711571..20d63b7c10 100644
--- a/src/builtin.cmod
+++ b/src/builtin.cmod
@@ -3661,13 +3661,17 @@ PMOD_EXPORT struct object *get_setter(struct object *o, int f)
 PIKEFUN function(mixed:void) _get_setter(object o, string s)
 {
   struct program *p;
+  struct inherit *inh;
   int f;
   if (!(p = o->prog)) {
     Pike_error("Indexing a destructed object.\n");
   }
+  inh = p->inherits + Pike_sp[-args].subtype;
+  p = inh->prog;
   f = find_shared_string_identifier(s, p);
   if ((f >= 0) &&
       IDENTIFIER_IS_VARIABLE(ID_FROM_INT(p, f)->identifier_flags)) {
+    f += inh->identifier_level;
     push_function(get_setter(o, f), f_Setter_cq__backtick_28_29_fun_num);
   } else {
     push_undefined();
-- 
GitLab