[前][次][番号順一覧][スレッド一覧]

ruby-changes:25792

From: kosaki <ko1@a...>
Date: Mon, 26 Nov 2012 15:52:20 +0900 (JST)
Subject: [ruby-changes:25792] kosaki:r37849 (trunk): * bignum.c (big_div_struct): added volatile to 'stop' member.

kosaki	2012-11-26 15:49:48 +0900 (Mon, 26 Nov 2012)

  New Revision: 37849

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37849

  Log:
    * bignum.c (big_div_struct): added volatile to 'stop' member.
      Otherwise, "if (bds->stop)" check in bigdivrem1 don't read
      memory and ignore interrupt.
    * bignum.c (bigdivrem, rb_big_stop): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/bignum.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37848)
+++ ChangeLog	(revision 37849)
@@ -1,3 +1,10 @@
+Mon Nov 26 15:33:02 2012  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* bignum.c (big_div_struct): added volatile to 'stop' member.
+	  Otherwise, "if (bds->stop)" check in bigdivrem1 don't read
+	  memory and ignore interrupt.
+	* bignum.c (bigdivrem, rb_big_stop): ditto.
+
 Mon Nov 26 12:11:09 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* win32/Makefile.sub (DLNOBJ): missing in r37821.
Index: bignum.c
===================================================================
--- bignum.c	(revision 37848)
+++ bignum.c	(revision 37849)
@@ -2657,7 +2657,7 @@
 struct big_div_struct {
     long nx, ny;
     BDIGIT *yds, *zds;
-    VALUE stop;
+    volatile VALUE stop;
 };
 
 static void *
@@ -2708,8 +2708,8 @@
 static void
 rb_big_stop(void *ptr)
 {
-    VALUE *stop = (VALUE*)ptr;
-    *stop = Qtrue;
+    struct big_div_struct *bds = ptr;
+    bds->stop = Qtrue;
 }
 
 static VALUE
@@ -2794,7 +2794,7 @@
     bds.yds = yds;
     bds.stop = Qfalse;
     if (nx > 10000 || ny > 10000) {
-	rb_thread_call_without_gvl(bigdivrem1, &bds, rb_big_stop, &bds.stop);
+	rb_thread_call_without_gvl(bigdivrem1, &bds, rb_big_stop, &bds);
     }
     else {
 	bigdivrem1(&bds);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]