--- parser3/src/include/pa_string.h 2009/07/16 09:19:45 1.194 +++ parser3/src/include/pa_string.h 2009/11/09 00:37:44 1.197 @@ -8,7 +8,7 @@ #ifndef PA_STRING_H #define PA_STRING_H -static const char * const IDENT_STRING_H="$Date: 2009/07/16 09:19:45 $"; +static const char * const IDENT_STRING_H="$Date: 2009/11/09 00:37:44 $"; // includes #include "pa_types.h" @@ -363,7 +363,15 @@ public: CORD get_cord() const { return body; } uint get_hash_code() const; - const char* cstr() const { return CORD_to_const_char_star(body, length()); } + const char* cstr() const { +#ifdef STRING_LENGTH_CACHING + string_length = length(); + if(string_length) + return const_cast(this)->body=CORD_to_const_char_star(body, string_length); +#endif + return CORD_to_const_char_star(body, length()); + } + char* cstrm() const { return CORD_to_char_star(body, length()); } #ifdef STRING_LENGTH_CACHING @@ -543,6 +551,9 @@ public: char *untaint_cstrm(Language lang, SQL_Connection* connection=0, const Request_charsets *charsets=0) const { return cstr_to_string_body_untaint(lang, connection, charsets).cstrm(); } + + const char* untaint_and_transcode_cstr(Language lang, const Request_charsets *charsets) const; + /// puts pieces to buf Cm serialize(size_t prolog_size) const; /// appends pieces from buf to self