From ec10c033a7f6ba4819b7a65eb31eba432028f28a Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 6 Aug 2015 01:44:03 +0000 Subject: ruby_atomic.h: atomic VALUE operations * ruby_atomic.h (ATOMIC_VALUE_EXCHANGE, ATOMIC_VALUE_CAS): add atomic operations for VALUE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- node.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'node.c') diff --git a/node.c b/node.c index 7551a811c8..84e7bddf34 100644 --- a/node.c +++ b/node.c @@ -1090,11 +1090,9 @@ rb_alloc_tmp_buffer(volatile VALUE *store, long len) void rb_free_tmp_buffer(volatile VALUE *store) { - VALUE s = *store; - *store = 0; + VALUE s = ATOMIC_VALUE_EXCHANGE(*store, 0); if (s) { - void *ptr = RNODE(s)->u1.node; - RNODE(s)->u1.node = 0; + void *ptr = ATOMIC_PTR_EXCHANGE(RNODE(s)->u1.node, 0); RNODE(s)->u3.cnt = 0; xfree(ptr); } -- cgit v1.2.3