From 12f491c4647b444cdcfd062de6301bbbcf395cee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Thu, 13 Jun 2013 21:52:45 +0200
Subject: [PATCH] Fix complex_svalue_is_true() for subtyped objects.

complex_svalue_is_true() was broken for subtyped objects for
private inherits.
---
 src/svalue.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/svalue.c b/src/svalue.c
index 39b1a8cc8f..08138506ab 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -525,11 +525,13 @@ int complex_svalue_is_true( const struct svalue *s )
 
       if(!(p = s->u.object->prog)) return 0;
 
-      if((fun = FIND_LFUN(p, LFUN_NOT)) == -1)
-          return 1;
-
-      if((fun = FIND_LFUN(p->inherits[SUBTYPEOF(*s)].prog, LFUN_NOT)) == -1)
-          return 1;
+      if (SUBTYPEOF(*s)) {
+	if((fun = FIND_LFUN(p->inherits[SUBTYPEOF(*s)].prog, LFUN_NOT)) == -1)
+	  return 1;
+      } else {
+	if((fun = FIND_LFUN(p, LFUN_NOT)) == -1)
+	  return 1;
+      }
 
       apply_low(s->u.object,
                 fun + p->inherits[SUBTYPEOF(*s)].identifier_level, 0);
-- 
GitLab