pike.git / src / interpret.c

version» Context lines:

pike.git/src/interpret.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: interpret.c,v 1.309 2003/07/18 09:58:42 grubba Exp $ + || $Id: interpret.c,v 1.310 2003/07/30 18:51:15 mast Exp $   */      #include "global.h" - RCSID("$Id: interpret.c,v 1.309 2003/07/18 09:58:42 grubba Exp $"); + RCSID("$Id: interpret.c,v 1.310 2003/07/30 18:51:15 mast Exp $");   #include "interpret.h"   #include "object.h"   #include "program.h"   #include "svalue.h"   #include "array.h"   #include "mapping.h"   #include "pike_error.h"   #include "language.h"   #include "stralloc.h"   #include "constants.h"
pike.git/src/interpret.c:1509:    o=scope->current_object;    goto apply_low_with_scope;    }    fun=LFUN_CALL;    type=APPLY_SVALUE;    goto call_lfun;    }    break;    }    -  call_lfun: +  call_lfun: { +  int lfun;   #ifdef PIKE_DEBUG    if(fun < 0 || fun >= NUM_LFUNS)    Pike_fatal("Apply lfun on illegal value!\n");   #endif    if(!o->prog)    PIKE_ERROR("destructed object", "Apply on destructed object.\n", Pike_sp, args); -  fun = FIND_LFUN(o->prog, fun); +  lfun = FIND_LFUN(o->prog, fun); +  if (lfun < 0) +  Pike_error ("Cannot call undefined lfun %s.\n", lfun_names[fun]); +  fun = lfun;    goto apply_low; -  +  }    -  +     case APPLY_LOW:    o = (struct object *)arg1;    fun = PTR_TO_INT(arg2);    if(o->prog == pike_trampoline_program &&    fun == QUICK_FIND_LFUN(pike_trampoline_program, LFUN_CALL))    {    fun=((struct pike_trampoline *)(o->storage))->func;    scope=((struct pike_trampoline *)(o->storage))->frame;    o=scope->current_object;    goto apply_low_with_scope;
pike.git/src/interpret.c:2036:    if(!o->prog)    PIKE_ERROR("destructed object", "Apply on destructed object.\n", Pike_sp, args);       apply_low(o, (int)FIND_LFUN(o->prog,fun), args);   }      PMOD_EXPORT void apply_shared(struct object *o,    struct pike_string *fun,    int args)   { -  apply_low(o, find_shared_string_identifier(fun, o->prog), args); +  int id = find_shared_string_identifier(fun, o->prog); +  if (id >= 0) +  apply_low(o, id, args); +  else +  if (fun->size_shift) +  Pike_error ("Cannot call unknown function.\n"); +  else +  Pike_error ("Cannot call unknown function \"%s\".\n", fun->str);   }      PMOD_EXPORT void apply(struct object *o, const char *fun, int args)   { -  apply_low(o, find_identifier(fun, o->prog), args); +  int id = find_identifier(fun, o->prog); +  if (id >= 0) +  apply_low(o, id, args); +  else +  Pike_error ("Cannot call unknown function \"%s\".\n", fun);   }         PMOD_EXPORT void apply_svalue(struct svalue *s, INT32 args)   {    if(s->type==T_INT)    {    pop_n_elems(args);    push_int(0);    }else{