diff --git a/src/operators.c b/src/operators.c index 131a29021fd04dfe0334a360ef3b43e190d8df91..b59f198f22036a9c0c2cc736a80c26c26c517e76 100644 --- a/src/operators.c +++ b/src/operators.c @@ -2,12 +2,12 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: operators.c,v 1.193 2004/08/24 14:34:06 grubba Exp $ +|| $Id: operators.c,v 1.194 2004/08/25 12:15:29 grubba Exp $ */ #include "global.h" #include <math.h> -RCSID("$Id: operators.c,v 1.193 2004/08/24 14:34:06 grubba Exp $"); +RCSID("$Id: operators.c,v 1.194 2004/08/25 12:15:29 grubba Exp $"); #include "interpret.h" #include "svalue.h" #include "multiset.h" @@ -1553,7 +1553,8 @@ static int generate_sum(node *n) { emit0(F_ADD_FLOATS); } - else if(pike_types_le(first_arg[0]->type, int_type_string) && + else if(first_arg[0]->type && second_arg[0]->type && + pike_types_le(first_arg[0]->type, int_type_string) && pike_types_le(second_arg[0]->type, int_type_string)) { emit0(F_ADD_INTS); @@ -1581,13 +1582,15 @@ static int generate_sum(node *n) return 1; } } - else if(pike_types_le(first_arg[0]->type, int_type_string) && + else if(first_arg[0]->type && second_arg[0]->type && + pike_types_le(first_arg[0]->type, int_type_string) && pike_types_le(second_arg[0]->type, int_type_string)) { do_docode(*first_arg, 0); do_docode(*second_arg, 0); emit0(F_ADD_INTS); - if (pike_types_le(third_arg[0]->type, int_type_string)) { + if (third_arg[0]->type && + pike_types_le(third_arg[0]->type, int_type_string)) { do_docode(*third_arg, 0); emit0(F_ADD_INTS); return 1;