Bug: char[]s not escaped 2007-07-01 - By Andrew Sayers
Back Tested against 2.2.3, mysqlpp::quote and mysqlpp::escape don't escape text passed as an array of characters:
#include <mysql++.h> #include <iostream>
using namespace std; using namespace mysqlpp;
int main() { string s1 = "Frank's Brand Hotdog Buns"; std::cout << quote << s1 << std::endl; // Output: 'Frank\'s Brand Hotdog Buns'
char s2[] = "Frank's Brand Hotdog Buns"; std::cout << quote << s2 << std::endl; // Output: Frank's Brand Hotdog Buns
}
C++ prefers to use the template functions rather than converting a char[] to a char*. Here's a patch:
--- manip-old.h 2007-05-08 00:49:32.000000000 +0100 +++ manip.h 2007-07-02 01:35:45.000000000 +0100 @@ -170,6 +170,18 @@ return operator <<(o, const_cast<const char* const&>(in)); } +inline std::ostream& operator <<(quote_type1 o, + char in[]) +{ + return operator <<(o, const_cast<const char* const&>(in)); +} + +inline std::ostream& operator <<(quote_type1 o, + const char in[]) +{ + return operator <<(o, const_cast<const char* const&>(in)); +} + template <> inline std::ostream& operator <<(quote_type1 o, @@ -540,6 +552,18 @@ return operator <<(o, const_cast<const char* const&>(in)); } +inline std::ostream& operator <<(escape_type1 o, + char in[]) +{ + return operator <<(o, const_cast<const char* const&>(in)); +} + +inline std::ostream& operator <<(escape_type1 o, + const char in[]) +{ + return operator <<(o, const_cast<const char* const&>(in)); +} + /// \enum do_nothing_type0 /// \anchor do_nothing_manip
-- MySQL++ Mailing List For list archives: http://lists.mysql.com/plusplus To unsubscribe: http://lists.mysql.com/plusplus?unsub=mysql@(protected)
|
|