--- parser3/src/classes/string.C 2013/03/10 18:45:07 1.207 +++ parser3/src/classes/string.C 2013/08/27 11:27:45 1.209 @@ -20,7 +20,7 @@ #include "pa_vregex.h" #include "pa_charsets.h" -volatile const char * IDENT_STRING_C="$Id: string.C,v 1.207 2013/03/10 18:45:07 moko Exp $"; +volatile const char * IDENT_STRING_C="$Id: string.C,v 1.209 2013/08/27 11:27:45 moko Exp $"; // class @@ -486,14 +486,14 @@ class String_sql_event_handlers: public bool got_column; public: bool got_cell; - String& result; + const String* result; public: String_sql_event_handlers( const String& astatement_string, const char* astatement_cstr): statement_string(astatement_string), statement_cstr(astatement_cstr), got_column(false), got_cell(false), - result(*new String) {} + result(&String::Empty) {} bool add_column(SQL_Error& error, const char* /*str*/, size_t /*length*/) { if(got_column) { @@ -517,7 +517,7 @@ public: try { got_cell=true; - result.append_know_length(str, length, String::L_TAINTED); + result=new String(str, String::L_TAINTED /* no length as 0x00 can be inside */ ); return false; } catch(...) { error=SQL_Error("exception occured in String_sql_event_handlers::add_row_cell"); @@ -587,7 +587,7 @@ const String* sql_result_string(Request& if(!handlers.got_cell) return 0; // no lines, caller should return second param[default value] - return &handlers.result; + return handlers.result; } static void _sql(Request& r, MethodParams& params) { @@ -659,7 +659,7 @@ static void _save(Request& r, MethodPara const String& file_name=params.as_string(file_name_index, FILE_NAME_MUST_BE_STRING); const String& src=GET_SELF(r, VString).string(); - String::Body sbody=src.cstr_to_string_body_untaint(String::L_AS_IS, r.connection(false/*no error if none*/)); + String::Body sbody=src.cstr_to_string_body_untaint(String::L_AS_IS, r.connection(false), &r.charsets); // write file_write(r.charsets, r.absolute(file_name), sbody.cstr(), sbody.length(), true, do_append, asked_charset);