--- parser3/src/main/execute.C 2015/05/07 18:27:35 1.374 +++ parser3/src/main/execute.C 2015/05/08 14:30:44 1.375 @@ -21,7 +21,7 @@ #include "pa_vimage.h" #include "pa_wwrapper.h" -volatile const char * IDENT_EXECUTE_C="$Id: execute.C,v 1.374 2015/05/07 18:27:35 moko Exp $" IDENT_PA_OPCODE_H IDENT_PA_OPERATION_H IDENT_PA_VCODE_FRAME_H IDENT_PA_WWRAPPER_H; +volatile const char * IDENT_EXECUTE_C="$Id: execute.C,v 1.375 2015/05/08 14:30:44 moko Exp $" IDENT_PA_OPCODE_H IDENT_PA_OPERATION_H IDENT_PA_VCODE_FRAME_H IDENT_PA_WWRAPPER_H; //#define DEBUG_EXECUTE @@ -1394,9 +1394,7 @@ StringOrValue Request::process(Value& in Junction* junction=input_value.get_junction(); if(junction) { if(junction->is_getter) { // is it a getter-junction? - StringOrValue result=process_getter(*junction); - Value *value=result.get_value(); - return value ? process(*value, intercept_string) : result; + return process(process_getter(*junction).as_value(), intercept_string); } if(junction->code) { // is it a code-junction? @@ -1458,12 +1456,8 @@ StringOrValue Request::process(Value& in void Request::process_write(Value& input_value) { Junction* junction=input_value.get_junction(); if(junction) { - if(junction->is_getter) { // is it a getter-junction? - StringOrValue result=process_getter(*junction); - Value *value=result.get_value(); - value ? process_write(*value) : write_pass_lang(result); - return; - } + // no getter-junction check as process_write is called + // to process method arguments, not from get_element if(junction->code) { // is it a code-junction? // process it