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
diff --git a/xpath.c b/xpath.c
index 24d8dc0..3a3d405 100644
--- a/xpath.c
+++ b/xpath.c
@@ -1125,6 +1125,36 @@
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];