Author: yamakenz
Date: Fri Jul 20 08:13:40 2007
New Revision: 4760

Modified:
   sigscheme-trunk/NEWS
   sigscheme-trunk/QALog
   sigscheme-trunk/src/number-io.c
   sigscheme-trunk/test/test-number-io.scm

Log:
* src/number-io.c
  - (scm_string2number): Fix overflow error by a long number with #f
* test/test-number-io.scm
  - Follow the specification change
* QALog
* NEWS
  - Update


Modified: sigscheme-trunk/NEWS
==============================================================================
--- sigscheme-trunk/NEWS        (original)
+++ sigscheme-trunk/NEWS        Fri Jul 20 08:13:40 2007
@@ -63,6 +63,8 @@
 
   - [SRFI-2] Fix body-less forms rejection on and-let* such as (and-let* ())
 
+  - [R5RS] Fix overflow error by a long number on string->number with #f
+
   - [R5RS] Fix invalid assertion on modifying optional arguments to a dotted or
     circular list (see test-misc.scm). This bug only appeared on --enable-debug
 

Modified: sigscheme-trunk/QALog
==============================================================================
--- sigscheme-trunk/QALog       (original)
+++ sigscheme-trunk/QALog       Fri Jul 20 08:13:40 2007
@@ -806,14 +806,14 @@
 
 file:              number-io.c
 category:          r5rs
-spec by eyes:      [EMAIL PROTECTED], [EMAIL PROTECTED]
-spec by tests:     [EMAIL PROTECTED], [EMAIL PROTECTED]
+spec by eyes:      [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]
+spec by tests:     [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]
 general review:    [EMAIL PROTECTED]
 64-bit by eyes:    [EMAIL PROTECTED]
 64-bit by tests:   [EMAIL PROTECTED]
 coding style:      [EMAIL PROTECTED]
-normal case tests: [EMAIL PROTECTED], [EMAIL PROTECTED]
-corner case tests: [EMAIL PROTECTED], [EMAIL PROTECTED]
+normal case tests: [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]
+corner case tests: [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]
 
 file:              list.c
 category:          r5rs
@@ -1093,6 +1093,10 @@
 
 Log
 ---
+2007-07-21  YamaKen <yamaken AT bp.iij4u.or.jp>
+        * number-io.c
+          - QA done again @r4760 for scm_string2number()
+
 2007-07-18  YamaKen <yamaken AT bp.iij4u.or.jp>
         * gcroots.h
         * gcroots.c

Modified: sigscheme-trunk/src/number-io.c
==============================================================================
--- sigscheme-trunk/src/number-io.c     (original)
+++ sigscheme-trunk/src/number-io.c     Fri Jul 20 08:13:40 2007
@@ -227,8 +227,16 @@
      *     converted value, if any. If no conversion could be performed, 0
      *     shall be returned and errno may be set to [EINVAL].
      */
-    if ((errno == ERANGE && !empty_strp) || INT_OUT_OF_RANGEP(n))
+    if ((errno == ERANGE && !empty_strp) || INT_OUT_OF_RANGEP(n)) {
+#if 0
         ERR(ERRMSG_FIXNUM_OVERFLOW ": ~S (radix ~D)", str, radix);
+#else
+        /* R5RS: If string is not a syntactically valid notation for a number,
+         *       then `string->number' returns #f.  */
+        *err = scm_true;
+        n = 0;
+#endif
+    }
 
     return n;
 }

Modified: sigscheme-trunk/test/test-number-io.scm
==============================================================================
--- sigscheme-trunk/test/test-number-io.scm     (original)
+++ sigscheme-trunk/test/test-number-io.scm     Fri Jul 20 08:13:40 2007
@@ -423,15 +423,15 @@
     "(assert-equal? (tn)  134217727 (string->number  \"134217727\"))")
    (string-eval
     "(assert-equal? (tn) -134217728 (string->number \"-134217728\"))")
-   (assert-error  (tn) (lambda () (string->number  "134217728")))
-   (assert-error  (tn) (lambda () (string->number "-134217729"))))
+   (assert-false (tn) (string->number  "134217728"))
+   (assert-false (tn) (string->number "-134217729")))
   ((32)
    (string-eval
     "(assert-equal? (tn)  2147483647 (string->number  \"2147483647\"))")
    (string-eval
     "(assert-equal? (tn) -2147483648 (string->number \"-2147483648\"))")
-   (assert-error  (tn) (lambda () (string->number   "2147483648")))
-   (assert-error  (tn) (lambda () (string->number  "-2147483649"))))
+   (assert-false (tn) (string->number   "2147483648"))
+   (assert-false (tn) (string->number  "-2147483649")))
   ((60)
    (string-eval
     "(assert-equal? (tn)
@@ -441,8 +441,8 @@
     "(assert-equal? (tn)
                     -576460752303423488
                     (string->number \"-576460752303423488\")))")
-   (assert-error  (tn) (lambda () (string->number  "576460752303423488")))
-   (assert-error  (tn) (lambda () (string->number "-576460752303423489"))))
+   (assert-false (tn) (string->number  "576460752303423488"))
+   (assert-false (tn) (string->number "-576460752303423489")))
   ((64)
    (string-eval
     "(assert-equal? (tn)
@@ -452,8 +452,8 @@
     "(assert-equal? (tn)
                     -9223372036854775808
                     (string->number \"-9223372036854775808\")))")
-   (assert-error  (tn) (lambda () (string->number  "9223372036854775808")))
-   (assert-error  (tn) (lambda () (string->number "-9223372036854775809"))))
+   (assert-false (tn) (string->number  "9223372036854775808"))
+   (assert-false (tn) (string->number "-9223372036854775809")))
   (else
    (assert-fail (tn) "unknown int bitwidth")))
 

Reply via email to