mirror of
https://github.com/GNOME/libxml2.git
synced 2025-02-17 18:19:32 +08:00
pretty insane thing, the xmlXPathFormatNumber() was not serializing 1 as
* xpath.c: pretty insane thing, the xmlXPathFormatNumber() was not serializing 1 as "1" if LC_ALL=sv_SE :-( and in the context of ScrollKeeper, made sure that if the number is an integer, the serialization follows the description at http://www.w3.org/TR/xpath#section-String-Functions Daniel
This commit is contained in:
parent
34ce8bece2
commit
28cac6b5a9
@ -1,3 +1,11 @@
|
||||
Tue Mar 19 12:15:20 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* xpath.c: pretty insane thing, the xmlXPathFormatNumber()
|
||||
was not serializing 1 as "1" if LC_ALL=sv_SE :-( and in the
|
||||
context of ScrollKeeper, made sure that if the number is
|
||||
an integer, the serialization follows the description at
|
||||
http://www.w3.org/TR/xpath#section-String-Functions
|
||||
|
||||
Mon Mar 18 19:18:13 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* configure.in: preparing 2.4.18
|
||||
|
30
xpath.c
30
xpath.c
@ -1125,6 +1125,36 @@ xmlXPathFormatNumber(double number, char buffer[], int buffersize)
|
||||
if (xmlXPathIsNaN(number)) {
|
||||
if (buffersize > (int)sizeof("NaN"))
|
||||
sprintf(buffer, "NaN");
|
||||
} else if (number == ((int) number)) {
|
||||
char work[30];
|
||||
char *ptr, *cur;
|
||||
int res, value = (int) number;
|
||||
|
||||
ptr = &buffer[0];
|
||||
if (value < 0) {
|
||||
*ptr++ = '-';
|
||||
value = -value;
|
||||
}
|
||||
if (value == 0) {
|
||||
*ptr++ = '0';
|
||||
} else {
|
||||
cur = &work[0];
|
||||
while (value != 0) {
|
||||
res = value % 10;
|
||||
value = value / 10;
|
||||
*cur++ = '0' + res;
|
||||
}
|
||||
cur--;
|
||||
while ((cur >= &work[0]) && (ptr - buffer < buffersize)) {
|
||||
*ptr++ = *cur--;
|
||||
}
|
||||
}
|
||||
if (ptr - buffer < buffersize) {
|
||||
*ptr = 0;
|
||||
} else if (buffersize > 0) {
|
||||
ptr--;
|
||||
*ptr = 0;
|
||||
}
|
||||
} else {
|
||||
/* 3 is sign, decimal point, and terminating zero */
|
||||
char work[DBL_DIG + EXPONENT_DIGITS + 3];
|
||||
|
Loading…
Reference in New Issue
Block a user