--- parser3/src/classes/json.C 2010/09/24 08:18:57 1.8 +++ parser3/src/classes/json.C 2010/10/01 23:07:30 1.10 @@ -4,7 +4,7 @@ Copyright (c) 2010 ArtLebedev Group (http://www.artlebedev.com) */ -static const char * const IDENT_RESPONSE_C="$Date: 2010/09/24 08:18:57 $"; +static const char * const IDENT_RESPONSE_C="$Date: 2010/10/01 23:07:30 $"; #include "classes.h" #include "pa_vmethod_frame.h" @@ -94,7 +94,7 @@ String* json_string(Json *json, const JS static Value *json_hook(Request &r, Junction *hook, String* key, Value* value){ VMethodFrame frame(*hook->method, r.method_frame, hook->self); - Value *params[]={new VString(*key), value}; + Value *params[]={new VString(key ? *key : String::Empty), value}; frame.store_params(params, 2); r.execute_method(frame); @@ -249,7 +249,7 @@ char *get_indent(uint level){ if (!cache[level]){ char *result = static_cast(pa_gc_malloc_atomic(level+1)); memset(result, '\t', level); - result[level+1]='\0'; + result[level]='\0'; return cache[level]=result; } return cache[level]; @@ -350,7 +350,7 @@ static void _string(Request& r, MethodPa valid_options++; } else if(Junction* junction=value->get_junction()){ if(!junction->method || !junction->method->params_names || junction->method->params_names->count() != 2) - throw Exception(PARSER_RUNTIME, 0, "$.%s must be parser method with 2 parameters", key); + throw Exception(PARSER_RUNTIME, 0, "$.%s must be parser method with 2 parameters", key.cstr()); methods->put(key, value); valid_options++; }