pike.git / src / program.c

version» Context lines:

pike.git/src/program.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: program.c,v 1.568 2005/05/26 17:05:06 mast Exp $ + || $Id: program.c,v 1.569 2005/05/30 12:38:43 mast Exp $   */      #include "global.h" - RCSID("$Id: program.c,v 1.568 2005/05/26 17:05:06 mast Exp $"); + RCSID("$Id: program.c,v 1.569 2005/05/30 12:38:43 mast Exp $");   #include "program.h"   #include "object.h"   #include "dynamic_buffer.h"   #include "pike_types.h"   #include "stralloc.h"   #include "las.h"   #include "language.h"   #include "lex.h"   #include "pike_macros.h"   #include "fsort.h"
pike.git/src/program.c:1534:    resolve_cache=dmalloc_touch(struct mapping *, allocate_mapping(10));    mapping_string_insert(resolve_cache,ident,Pike_sp-1);       if(!(SAFE_IS_ZERO(Pike_sp-1) && Pike_sp[-1].subtype==1))    {    ret=mkconstantsvaluenode(Pike_sp-1);    }    }    pop_stack();    } -  else +  else {    if(Pike_compiler->compiler_pass==2) {    if (throw_value.type == T_STRING && !throw_value.u.string->size_shift) {    yyerror(throw_value.u.string->str);    free_svalue(&throw_value);    throw_value.type = T_INT;    }    else {    if (!ident->size_shift)    handle_compile_exception ("Error resolving '%s'.", ident->str);    else    handle_compile_exception ("Error resolving identifier.");    }    } -  +  else { +  /* FIXME: Error goes to /dev/null. Now we get a warning at +  * least in rtldebug mode, but this borken, borken, boRKen. :P */ +  struct svalue thrown; +  move_svalue (&thrown, &throw_value); +  throw_value.type = T_INT; + #ifdef PIKE_DEBUG +  { +  struct pike_string *msg = format_exception_for_error_msg (&thrown); +  if (msg && !msg->size_shift) { +  yywarning ("Ignoring resolv() exception in pass %d:", +  Pike_compiler->compiler_pass); +  yywarning (msg->str); +  free_string (msg);    } -  +  else +  yywarning ("Ignoring resolv() exception in pass %d", +  Pike_compiler->compiler_pass); +  } + #endif +  free_svalue (&thrown); +  } +  } +  }    END_CYCLIC();       return ret;    }       return 0;   }      /*! @decl constant this    *!