From e96513a759d196e680d79d11e0beacf78cc1bcae Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 18 Jul 2006 01:55:15 +0000 Subject: * object.c (rb_cstr_to_dbl): limit out-of-range message. * util.c (ruby_strtod): return end pointer even if ERANGE occurred. fixed: [ruby-dev:29041] git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@10553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- util.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'util.c') diff --git a/util.c b/util.c index 6c1854334..76902d9a6 100644 --- a/util.c +++ b/util.c @@ -890,11 +890,13 @@ ruby_strtod(string, endPtr) if (exp >= MDMAXEXPT) { errno = ERANGE; - return HUGE_VAL * (sign ? -1.0 : 1.0); + fraction = HUGE_VAL; + goto ret; } else if (exp < MDMINEXPT) { errno = ERANGE; - return 0.0 * (sign ? -1.0 : 1.0); + fraction = 0.0; + goto ret; } fracExp = exp; exp += 9; @@ -940,6 +942,7 @@ ruby_strtod(string, endPtr) fraction = frac1 + frac2; } + ret: if (endPtr != NULL) { *endPtr = (char *)p; } -- cgit