--- parser3/src/main/execute.C 2002/08/01 11:41:17 1.244 +++ parser3/src/main/execute.C 2002/08/09 14:18:39 1.247 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2002/08/01 11:41:17 $"; +static const char* IDENT_EXECUTE_C="$Date: 2002/08/09 14:18:39 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -848,9 +848,8 @@ void Request::execute(const Array& ops) } case OP_IS: { - //_asm int 3; b=POP(); a=POP(); - value=NEW VBool(pool(), b->as_string() == a->type()); + value=NEW VBool(pool(), a->as(b->as_string().cstr())!=0); PUSH(value); break; } @@ -1007,19 +1006,18 @@ void Request::execute_method(Value& asel } local_frame.set_self(*self); root=rcontext=wcontext=&local_frame; + + // prevent non-string writes for better error reporting + if(return_string) + wcontext->write(local_frame); // execute! execute(*method.parser_code); // result const String *result=0; - if(return_string) { - /*if(Value *result_var_value=wcontext->get_element(*result_var_name)) - *return_string=&result_var_value->as_string(); - else - *return_string=&wcontext->as_string();*/ + if(return_string) *return_string=&wcontext->result().as_string(); - } wcontext=static_cast(POP()); rcontext=POP();