ruby-changes:21411
From: nobu <ko1@a...>
Date: Thu, 13 Oct 2011 18:04:40 +0900 (JST)
Subject: [ruby-changes:21411] nobu:r33460 (trunk): * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
nobu 2011-10-13 18:04:29 +0900 (Thu, 13 Oct 2011) New Revision: 33460 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33460 Log: * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer): should use ATOMIC_EXCHANGE() to check the previous value. [ruby-dev:44596] [Bug #5439] Modified files: trunk/ChangeLog trunk/gc.c Index: ChangeLog =================================================================== --- ChangeLog (revision 33459) +++ ChangeLog (revision 33460) @@ -1,3 +1,9 @@ +Thu Oct 13 18:04:27 2011 Nobuyoshi Nakada <nobu@r...> + + * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer): + should use ATOMIC_EXCHANGE() to check the previous value. + [ruby-dev:44596] [Bug #5439] + Wed Oct 12 23:39:58 2011 Hiroshi Nakamura <nahi@r...> * test/openssl/test_ssl.rb: Move duplicated tests for SSL::Session to Index: gc.c =================================================================== --- gc.c (revision 33459) +++ gc.c (revision 33460) @@ -2977,7 +2977,7 @@ rb_gc_finalize_deferred(void) { rb_objspace_t *objspace = &rb_objspace; - if (ATOMIC_SET(finalizing, 1)) return; + if (ATOMIC_EXCHANGE(finalizing, 1)) return; finalize_deferred(objspace); ATOMIC_SET(finalizing, 0); } @@ -3031,7 +3031,7 @@ /* run finalizers */ gc_clear_mark_on_sweep_slots(objspace); - if (ATOMIC_SET(finalizing, 1)) return; + if (ATOMIC_EXCHANGE(finalizing, 1)) return; do { /* XXX: this loop will make no sense */ -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/