--- parser3/src/classes/reflection.C 2015/10/25 22:27:59 1.36 +++ parser3/src/classes/reflection.C 2015/10/26 01:21:54 1.38 @@ -1,7 +1,7 @@ /** @file Parser: @b reflection parser class. - Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com) + Copyright (c) 2001-2015 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ @@ -9,7 +9,7 @@ #include "pa_request.h" #include "pa_vbool.h" -volatile const char * IDENT_REFLECTION_C="$Id: reflection.C,v 1.36 2015/10/25 22:27:59 moko Exp $"; +volatile const char * IDENT_REFLECTION_C="$Id: reflection.C,v 1.38 2015/10/26 01:21:54 moko Exp $"; static const String class_type_methoded("methoded"); @@ -336,8 +336,8 @@ static void _dynamical(Request& r, Metho static void _is(Request& r, MethodParams& params) { const String& type=params.as_string(0, "class name must be string"); const String& name=params.as_string(params.count()-1, "element name must be string"); - Value &context=params.count()==3 ? params.as_no_junction(1, "context must not be code") : *(r.get_method_frame()->caller()); - Value *value=context.get_element(name); + Value *context=params.count()==3 ? &(params.as_no_junction(1, "context must not be code")) : r.get_method_frame()->caller(); + Value *value=context ? context->get_element(name) : 0; if(value) { if(type == "code" || type == "method") {