diff options
Diffstat (limited to 'ruby/src/IceRuby/ValueFactoryManager.cpp')
-rw-r--r-- | ruby/src/IceRuby/ValueFactoryManager.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/ruby/src/IceRuby/ValueFactoryManager.cpp b/ruby/src/IceRuby/ValueFactoryManager.cpp index 649d435f29d..562526c0003 100644 --- a/ruby/src/IceRuby/ValueFactoryManager.cpp +++ b/ruby/src/IceRuby/ValueFactoryManager.cpp @@ -192,11 +192,17 @@ IceRuby::ValueFactoryManager::mark() void IceRuby::ValueFactoryManager::markSelf() { - Lock lock(*this); + volatile VALUE self; + + { + Lock lock(*this); + + self = _self; + } - if(!NIL_P(_self)) + if(!NIL_P(self)) { - rb_gc_mark(_self); + rb_gc_mark(self); } } |