--- parser3/src/main/execute.C 2010/08/30 10:49:05 1.365 +++ parser3/src/main/execute.C 2010/10/21 15:25:07 1.367 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_EXECUTE_C="$Date: 2010/08/30 10:49:05 $"; +static const char * const IDENT_EXECUTE_C="$Date: 2010/10/21 15:25:07 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -639,13 +639,10 @@ void Request::execute(ArrayOperation& op execute(local_ops); - Value* value; // from "$a $b" part of expression taking only string value, // ignoring any other content of wcontext - if(const String* string=wcontext->get_string()) - value=new VString(*string); - else - value=VVoid::get(); + const String* string=wcontext->get_string(); + Value* value=string ? new VString(*string) : new VString(); stack.push(*value); wcontext=saved_wcontext; @@ -842,9 +839,9 @@ void Request::execute(ArrayOperation& op object.enable_default_setter(); if(opcode==OP::OP_CONSTRUCT_OBJECT) - stack.push(object); + stack.push(frame.result().as_value()); else - write_pass_lang(object); + write_pass_lang(frame.result()); DEBUG_PRINT_STR("<-returned") break;