pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:1:   /*   || 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"   #include "mapping.h"   #include "array.h"   #include "stralloc.h"   #include "opcodes.h"   #include "operators.h"   #include "pike_memory.h"   #include "pike_error.h"
pike.git/src/operators.c:1546:    case 2:    first_arg=my_get_arg(&_CDR(n), 0);    second_arg=my_get_arg(&_CDR(n), 1);       do_docode(CDR(n),DO_NOT_COPY_TOPLEVEL);    if(first_arg[0]->type == float_type_string &&    second_arg[0]->type == float_type_string)    {    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);    }    else    {    emit0(F_ADD);    }    return 1;   
pike.git/src/operators.c:1574:    {    do_docode(*first_arg, 0);    do_docode(*second_arg, 0);    emit0(F_ADD_FLOATS);    if (third_arg[0]->type == float_type_string) {    do_docode(*third_arg, 0);    emit0(F_ADD_FLOATS);    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;    }    }    else    {    return 0;    }    do_docode(*third_arg, 0);