diff options
Diffstat (limited to 'eval_intern.h')
-rw-r--r-- | eval_intern.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/eval_intern.h b/eval_intern.h index cf7fb23197..e32eafe2a8 100644 --- a/eval_intern.h +++ b/eval_intern.h @@ -95,8 +95,7 @@ extern int select_large_fdset(int, fd_set *, fd_set *, fd_set *, struct timeval rb_thread_t * const _th = (th); \ struct rb_vm_tag _tag; \ _tag.tag = 0; \ - _tag.prev = _th->tag; \ - _th->tag = &_tag; + _tag.prev = _th->tag; #define TH_POP_TAG() \ _th->tag = _tag.prev; \ @@ -129,7 +128,7 @@ rb_threadptr_tag_jump(rb_thread_t *th, int st) [ISO/IEC 9899:1999] 7.13.1.1 */ #define TH_EXEC_TAG() \ - (ruby_setjmp(_th->tag->buf) ? rb_threadptr_tag_state(_th) : 0) + (ruby_setjmp(_tag.buf) ? rb_threadptr_tag_state(_th) : (_th->tag = &_tag, 0)) #define EXEC_TAG() \ TH_EXEC_TAG() |