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")))