# HG changeset patch # User james # Date 1081305690 0 # Node ID e567417c2e5d013d6e63d3efc9b030dd41af7a7f # Parent 4529ff71e64678f6037aa5b0bc2a4aa9394c006d [xemacs-hg @ 2004-04-07 02:41:29 by james] Read negative bignums correctly with BSD MP. diff -r 4529ff71e646 -r e567417c2e5d src/ChangeLog --- a/src/ChangeLog Wed Apr 07 02:20:14 2004 +0000 +++ b/src/ChangeLog Wed Apr 07 02:41:30 2004 +0000 @@ -1,3 +1,7 @@ +2004-04-06 Jerry James + + * number-mp.c (bignum_set_string): Read negative numbers correctly. + 2004-04-06 Jerry James * data.c (Flogand): Fix for --use-union-type. diff -r 4529ff71e646 -r e567417c2e5d src/number-mp.c --- a/src/number-mp.c Wed Apr 07 02:20:14 2004 +0000 +++ b/src/number-mp.c Wed Apr 07 02:41:30 2004 +0000 @@ -193,6 +193,7 @@ { MINT *mbase; short digit; + int neg = 0; if (base == 0) { @@ -212,6 +213,12 @@ /* FIXME: signal something if base is < 2 or doesn't fit into a short. */ + if (*s == '-') + { + s++; + neg = 1; + } + mbase = MP_ITOM ((short) base); MP_MOVE (bignum_zero, b); @@ -226,6 +233,9 @@ MP_MFREE (temp); } + if (neg) + MP_MSUB (bignum_zero, b, b); + return (digit >= 0) ? -1 : 0; }