--- parser3/src/classes/hash.C 2005/06/06 08:45:11 1.73 +++ parser3/src/classes/hash.C 2005/08/26 12:01:38 1.76 @@ -1,11 +1,11 @@ /** @file Parser: @b hash parser class. - Copyright (c) 2001-2004 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_HASH_C="$Date: 2005/06/06 08:45:11 $"; +static const char * const IDENT_HASH_C="$Date: 2005/08/26 12:01:38 $"; #include "classes.h" #include "pa_vmethod_frame.h" @@ -22,7 +22,7 @@ static const char * const IDENT_HASH_C=" class MHash: public Methoded { public: // VStateless_class - Value* create_new_value(Pool&) { return new VHash(); } + Value* create_new_value(Pool&, HashStringValue&) { return new VHash(); } public: MHash(); @@ -233,7 +233,7 @@ static void _sql(Request& r, MethodParam bool distinct=false; if(params.count()>1) { Value& voptions=params.as_no_junction(1, "options must be hash, not code"); - if(!voptions.is_string()) + if(voptions.is_defined() && !voptions.is_string()) if(HashStringValue* options=voptions.get_hash()) { int valid_options=0; if(Value* vbind=options->get(sql_bind_name)) { @@ -339,8 +339,8 @@ static void one_foreach_cycle( Foreach_info *info) { info->vkey->set_string(*new String(akey, String::L_TAINTED)); Value& ncontext=*info->r->get_method_frame()->caller(); - ncontext.put_element(*info->key_var_name, info->vkey, false); - ncontext.put_element(*info->value_var_name, avalue, false); + ncontext.put_element(ncontext, *info->key_var_name, info->vkey, false); + ncontext.put_element(ncontext, *info->value_var_name, avalue, false); StringOrValue sv_processed=info->r->process(*info->body_code); const String* s_processed=sv_processed.get_string();