--- parser3/src/main/execute.C 2003/07/24 11:31:23 1.297 +++ parser3/src/main/execute.C 2003/10/02 07:26:46 1.299 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2003/07/24 11:31:23 $"; +static const char* IDENT_EXECUTE_C="$Date: 2003/10/02 07:26:46 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -328,7 +328,7 @@ void Request::execute(ArrayOperation& op case OP_STORE_PARAM: { Value& value=stack.pop().value(); - VMethodFrame& frame=stack.upper_value().method_frame(); + VMethodFrame& frame=stack.top_value().method_frame(); // this op is executed from CALL local_ops only, so may skip the check "method_frame_to_fill==0" frame.store_param(value); break; @@ -338,7 +338,7 @@ void Request::execute(ArrayOperation& op { // code ArrayOperation& local_ops=*i.next().ops; - VMethodFrame& frame=stack.upper_value().method_frame(); + VMethodFrame& frame=stack.top_value().method_frame(); #ifdef DEBUG_EXECUTE debug_printf(sapi_info, " (%d)\n", local_ops.count()); debug_dump(sapi_info, 1, local_ops); @@ -938,7 +938,7 @@ StringOrValue Request::process(Value& in return result; } -const String& Request::execute_method(VMethodFrame& amethod_frame, const Method& method) { +StringOrValue Request::execute_method(VMethodFrame& amethod_frame, const Method& method) { VMethodFrame *saved_method_frame=method_frame; Value* saved_rcontext=rcontext; WContext *saved_wcontext=wcontext; @@ -950,7 +950,7 @@ const String& Request::execute_method(VM execute(*method.parser_code); // result - const String& result=wcontext->result().as_string(); + StringOrValue result=wcontext->result(); wcontext=saved_wcontext; rcontext=saved_rcontext;