From 4bacdc1e46ab788f9285ccd8eccd2776260f9528 Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 11 Jul 2006 05:00:02 +0000 Subject: * bignum.c (bignorm): sizeof(long) may be smaller than sizeof(VALUE). [ruby-dev:29013] * ruby.h (FIXNUM_MAX): fixnum may be bigger than long. * ruby.h (SIGNED_VALUE): signed integer of size of VALUE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/bigdecimal/bigdecimal.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'ext/bigdecimal/bigdecimal.c') diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index bff9eacbe8..4de5672457 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -2496,14 +2496,25 @@ VpAlloc(U_LONG mx, const char *szVal) return vp; } - /* Skip all spaces */ + /* Skip all '_' after digit: 2006-6-30 */ + ni = 0; psz = ALLOCA_N(char,strlen(szVal)+1); i = 0; ipn = 0; while(psz[i]=szVal[ipn]) { - if(ISSPACE(szVal[ipn])) {ipn++;continue;} + if(ISDIGIT(psz[i])) ++ni; + if(psz[i]=='_') { + if(ni>0) {ipn++;continue;} + psz[i]=0; + break; + } ++i; ++ipn; } + /* Skip trailing spaces */ + while((--i)>0) { + if(ISSPACE(psz[i])) psz[i] = 0; + else break; + } szVal = psz; /* Check on Inf & NaN */ -- cgit v1.2.3