--- parser3/src/main/execute.C 2020/10/27 22:12:40 1.409 +++ parser3/src/main/execute.C 2020/12/15 17:10:34 1.412 @@ -1,7 +1,7 @@ /** @file Parser: executor part of request class. - Copyright (c) 2001-2017 Art. Lebedev Studio (http://www.artlebedev.com) + Copyright (c) 2001-2020 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ @@ -21,7 +21,7 @@ #include "pa_vimage.h" #include "pa_wwrapper.h" -volatile const char * IDENT_EXECUTE_C="$Id: execute.C,v 1.409 2020/10/27 22:12:40 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.412 2020/12/15 17:10:34 moko Exp $" IDENT_PA_OPCODE_H IDENT_PA_OPERATION_H IDENT_PA_VCODE_FRAME_H IDENT_PA_WWRAPPER_H; //#define DEBUG_EXECUTE @@ -928,14 +928,14 @@ void Request::execute(ArrayOperation& op case OP::OP_FEXISTS: { Value& a=stack.pop().value(); - Value& value=VBool::get(file_exist(absolute(a.as_string()))); + Value& value=VBool::get(file_exist(full_disk_path(a.as_string()))); stack.push(value); break; } case OP::OP_DEXISTS: { Value& a=stack.pop().value(); - Value& value=VBool::get(dir_exists(absolute(a.as_string()))); + Value& value=VBool::get(dir_exists(full_disk_path(a.as_string()))); stack.push(value); break; } @@ -1447,7 +1447,11 @@ const String* Request::execute_method(VS call(frame); - return &frame.result().as_string(); + Value &result=frame.result(); + if(const String* sresult=result.get_string()){ + return sresult; + } + result.bark("is '%s', it has no string representation", &method_name); }); } return 0;