diff src/data.c @ 2010:a9cdbfb4716e

[xemacs-hg @ 2004-04-13 15:38:30 by james] Handle leading + signs on numbers correctly.
author james
date Tue, 13 Apr 2004 15:38:42 +0000
parents cc5b615380f8
children f2fdfc131770
line wrap: on
line diff
--- a/src/data.c	Tue Apr 13 04:23:50 2004 +0000
+++ b/src/data.c	Tue Apr 13 15:38:42 2004 +0000
@@ -1271,6 +1271,9 @@
 #ifdef HAVE_BIGFLOAT
       else
 	{
+	  /* GMP bigfloat_set_string returns random values with initial + */
+	  if (*p == '+')
+	    p++;
 	  bigfloat_set_prec (scratch_bigfloat, bigfloat_get_default_prec ());
 	  bigfloat_set_string (scratch_bigfloat, (const char *) p, b);
 	  return make_bigfloat_bf (scratch_bigfloat);
@@ -1281,12 +1284,19 @@
 #ifdef HAVE_RATIO
   if (qxestrchr (p, '/') != NULL)
     {
+      /* GMP ratio_set_string returns random values with initial + sign */
+      if (*p == '+')
+	p++;
       ratio_set_string (scratch_ratio, (const char *) p, b);
       return make_ratio_rt (scratch_ratio);
     }
 #endif /* HAVE_RATIO */
 
 #ifdef HAVE_BIGNUM
+  /* GMP bignum_set_string returns random values when the string starts with a
+     plus sign */
+  if (*p == '+')
+    p++;
   /* GMP bignum_set_string returns random values when fed an empty string */
   if (*p == '\0')
     return make_int (0);