ruby-changes:6695
From: nobu <ko1@a...>
Date: Fri, 25 Jul 2008 18:04:46 +0900 (JST)
Subject: [ruby-changes:6695] Ruby:r18211 (ruby_1_8): * bignum.c (rb_big2str0, bigsqr): made interruptible. [ruby-Bugs-20622]
nobu 2008-07-25 18:04:19 +0900 (Fri, 25 Jul 2008) New Revision: 18211 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18211 Log: * bignum.c (rb_big2str0, bigsqr): made interruptible. [ruby-Bugs-20622] Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/bignum.c branches/ruby_1_8/common.mk Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 18210) +++ ruby_1_8/ChangeLog (revision 18211) @@ -1,3 +1,7 @@ +Fri Jul 25 18:04:17 2008 Nobuyoshi Nakada <nobu@r...> + + * bignum.c (rb_big2str0, bigsqr): made interruptible. [ruby-Bugs-20622] + Fri Jul 25 00:10:23 2008 Nobuyoshi Nakada <nobu@r...> * file.c (rb_find_file_ext, rb_find_file): converts Windows style path Index: ruby_1_8/bignum.c =================================================================== --- ruby_1_8/bignum.c (revision 18210) +++ ruby_1_8/bignum.c (revision 18211) @@ -11,6 +11,7 @@ **********************************************************************/ #include "ruby.h" +#include "rubysig.h" #include <math.h> #include <float.h> @@ -720,6 +721,7 @@ s = RSTRING(ss)->ptr; s[0] = RBIGNUM(x)->sign ? '+' : '-'; + TRAP_BEG; while (i && j > 1) { long k = i; BDIGIT_DBL num = 0; @@ -749,6 +751,7 @@ RSTRING(ss)->len = i; } s[RSTRING(ss)->len] = '\0'; + TRAP_END; return ss; } @@ -1735,11 +1738,13 @@ RBIGNUM(z)->len = len; a2 = bigtrunc(rb_big_mul0(a, b)); len = RBIGNUM(a2)->len; + TRAP_BEG; for (i = 0, num = 0; i < len; i++) { num += (BDIGIT_DBL)BDIGITS(z)[i + k] + ((BDIGIT_DBL)BDIGITS(a2)[i] << 1); BDIGITS(z)[i + k] = BIGLO(num); num = BIGDN(num); } + TRAP_END; if (num) { len = RBIGNUM(z)->len; for (i += k; i < len && num; ++i) { Index: ruby_1_8/common.mk =================================================================== --- ruby_1_8/common.mk (revision 18210) +++ ruby_1_8/common.mk (revision 18211) @@ -368,7 +368,8 @@ array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) \ {$(VPATH)}util.h {$(VPATH)}st.h -bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) +bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) \ + {$(VPATH)}rubysig.h class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) \ {$(VPATH)}rubysig.h {$(VPATH)}node.h {$(VPATH)}st.h compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/