1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-30 22:43:14 +03:00

hum, restrict the integer usage gcc bug workaround to only gcc compilers

* xpath.c: hum, restrict the integer usage gcc bug workaround
  to only gcc compilers so that other architecture don't get
  penalized by this limitation.
* include/libxml/xpath.h: small typo fix from Heiko W. Rupp
Daniel
This commit is contained in:
Daniel Veillard
2001-08-27 14:26:30 +00:00
parent 268fd1bc97
commit b06c61455f
3 changed files with 22 additions and 3 deletions

View File

@ -1,3 +1,10 @@
Mon Aug 27 16:24:47 CEST 2001 Daniel Veillard <daniel@veillard.com>
* xpath.c: hum, restrict the integer usage gcc bug workaround
to only gcc compilers so that other architecture don't get
penalized by this limitation.
* include/libxml/xpath.h: small typo fix from Heiko W. Rupp
Sun Aug 26 20:45:04 CEST 2001 Daniel Veillard <daniel@veillard.com> Sun Aug 26 20:45:04 CEST 2001 Daniel Veillard <daniel@veillard.com>
* valid.c: fixed a Windows compiler warning (Chris Poblete) * valid.c: fixed a Windows compiler warning (Chris Poblete)

View File

@ -135,7 +135,7 @@ struct _xmlXPathVariable {
* @ctxt: an XPath parser context * @ctxt: an XPath parser context
* @nargs: the number of arguments passed to the function * @nargs: the number of arguments passed to the function
* *
* an XPath evaluation function, the parameters are on thei XPath context stack * an XPath evaluation function, the parameters are on the XPath context stack
*/ */
typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt, typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,

16
xpath.c
View File

@ -6546,10 +6546,13 @@ xmlXPathStringEvalNumber(const xmlChar *str) {
const xmlChar *cur = str; const xmlChar *cur = str;
double ret = 0.0; double ret = 0.0;
double mult = 1; double mult = 1;
int ok = 0, tmp = 0; int ok = 0;
int isneg = 0; int isneg = 0;
int exponent = 0; int exponent = 0;
int is_exponent_negative = 0; int is_exponent_negative = 0;
#ifdef __GNUC__
unsigned long tmp = 0;
#endif
while (IS_BLANK(*cur)) cur++; while (IS_BLANK(*cur)) cur++;
if ((*cur != '.') && ((*cur < '0') || (*cur > '9')) && (*cur != '-')) { if ((*cur != '.') && ((*cur < '0') || (*cur > '9')) && (*cur != '-')) {
@ -6559,8 +6562,10 @@ xmlXPathStringEvalNumber(const xmlChar *str) {
isneg = 1; isneg = 1;
cur++; cur++;
} }
#ifdef __GNUC__
/* /*
* tmp is a workaroudn against a gcc compiler bug * tmp is a workaround against a gcc compiler bug
*/ */
while ((*cur >= '0') && (*cur <= '9')) { while ((*cur >= '0') && (*cur <= '9')) {
tmp = tmp * 10 + (*cur - '0'); tmp = tmp * 10 + (*cur - '0');
@ -6568,6 +6573,13 @@ xmlXPathStringEvalNumber(const xmlChar *str) {
cur++; cur++;
} }
ret = (double) tmp; ret = (double) tmp;
#else
while ((*cur >= '0') && (*cur <= '9')) {
ret = ret * 10 + (*cur - '0');
ok = 1;
cur++;
}
#endif
if (*cur == '.') { if (*cur == '.') {
cur++; cur++;