Hello
On Linux/ppc, gcc uses unsigned char's by default. query.cpp constructs
an object of SQLParseElement and gives it a value of -1 for the "char"
parameter (n). Later this value is compared to -1, which will be 255
when using unsigned chars. The result is a wrongly thrown exception. The
attached patch changes the type to "short int" where the number is used.
Signed-off-by: Michael Hanselmann <mysql@stripped>
Greets,
Michael
--
Gentoo Linux developer, http://hansmi.ch/, http://forkbomb.ch/
diff -ru mysql++-2.1.1.orig/lib/qparms.h mysql++-2.1.1/lib/qparms.h
--- mysql++-2.1.1.orig/lib/qparms.h 2006-04-05 06:44:49.000000000 +0200
+++ mysql++-2.1.1/lib/qparms.h 2006-11-23 00:11:05.000000000 +0100
@@ -232,7 +232,7 @@
/// \param b the 'before' value
/// \param o the 'option' value
/// \param n the 'num' value
- SQLParseElement(std::string b, char o, char n) :
+ SQLParseElement(std::string b, char o, short int n) :
before(b),
option(o),
num(n)
@@ -241,7 +241,7 @@
std::string before; ///< string inserted before the parameter
char option; ///< the parameter option, or blank if none
- char num; ///< the parameter position to use
+ short int num; ///< the parameter position to use
};
} // end namespace mysqlpp
diff -ru mysql++-2.1.1.orig/lib/query.cpp mysql++-2.1.1/lib/query.cpp
--- mysql++-2.1.1.orig/lib/query.cpp 2006-04-05 06:44:49.000000000 +0200
+++ mysql++-2.1.1/lib/query.cpp 2006-11-23 00:16:04.000000000 +0100
@@ -220,7 +220,7 @@
}
// Finished parsing parameter; save it.
- parse_elems_.push_back(SQLParseElement(str, option, char(n)));
+ parse_elems_.push_back(SQLParseElement(str, option, n));
str = "";
name = "";
}
@@ -304,7 +304,7 @@
{
sbuffer_.str("");
- char num;
+ short int num;
SQLString* ss;
SQLQueryParms* c;
Attachment: [application/pgp-signature]