# HG changeset patch # User james # Date 1082042858 0 # Node ID 92f7301e4a233d38f2dd5aa6b454186ace520893 # Parent f2fdfc131770e7f10b078546d8968bad8b0104a7 [xemacs-hg @ 2004-04-15 15:27:34 by james] Fix GMP workaround to also work for negative numbers. diff -r f2fdfc131770 -r 92f7301e4a23 src/ChangeLog --- a/src/ChangeLog Wed Apr 14 22:50:54 2004 +0000 +++ b/src/ChangeLog Thu Apr 15 15:27:38 2004 +0000 @@ -1,3 +1,8 @@ +2004-04-15 Jerry James + + * data.c (Fstring_to_number): Skip leading '-' when finding the + end of a number. + 2004-04-14 Jerry James * data.c (Fstring_to_number): Work around limitations of GMP diff -r f2fdfc131770 -r 92f7301e4a23 src/data.c --- a/src/data.c Wed Apr 14 22:50:54 2004 +0000 +++ b/src/data.c Thu Apr 15 15:27:38 2004 +0000 @@ -1307,18 +1307,23 @@ if (*p == '+') p++; - for (end = p; - (*end >= '0' && *end <= '9') || + end = p; + if (*end == '-') + end++; + while ((*end >= '0' && *end <= '9') || (b > 10 && *end >= 'a' && *end <= 'a' + b - 11) || - (b > 10 && *end >= 'A' && *end <= 'A' + b - 11); - end++); + (b > 10 && *end >= 'A' && *end <= 'A' + b - 11)) + end++; if (*end == '/') - for (end++; - (*end >= '0' && *end <= '9') || - (b > 10 && *end >= 'a' && *end <= 'a' + b - 11) || - (b > 10 && *end >= 'A' && *end <= 'A' + b - 11); - end++); - + { + end++; + if (*end == '-') + end++; + while ((*end >= '0' && *end <= '9') || + (b > 10 && *end >= 'a' && *end <= 'a' + b - 11) || + (b > 10 && *end >= 'A' && *end <= 'A' + b - 11)) + end++; + } save = *end; *end = '\0'; ratio_set_string (scratch_ratio, (const char *) p, b); @@ -1345,11 +1350,13 @@ if (*p == '+') p++; - for (end = p; - (*end >= '0' && *end <= '9') || + end = p; + if (*end == '-') + end++; + while ((*end >= '0' && *end <= '9') || (b > 10 && *end >= 'a' && *end <= 'a' + b - 11) || - (b > 10 && *end >= 'A' && *end <= 'A' + b - 11); - end++); + (b > 10 && *end >= 'A' && *end <= 'A' + b - 11)) + end++; save = *end; *end = '\0'; if (*p == '\0')