diff --git a/src/svalue.c b/src/svalue.c index 39b1a8cc8f15452e3bd2b95c2eff60af74ef9c79..08138506ab2a6b4cf44639966bba5c7aa4f2f019 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);