From a58b1276f20799bd868ea89018dc09024e7d7489 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 23 Jun 2017 11:15:26 +0000 Subject: vm_core.h: sandwich jmpbuf * vm_core.h (rb_vm_tag): move jmpbuf which should be stored at the last in TH_PUSH_TAG, between tag and state so ensure to be accessible. reapplied r40806. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_core.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vm_core.h b/vm_core.h index 9081bcea3d..028d9c3177 100644 --- a/vm_core.h +++ b/vm_core.h @@ -691,11 +691,16 @@ typedef RUBY_JMP_BUF rb_jmpbuf_t; struct rb_vm_tag { VALUE tag; VALUE retval; + rb_jmpbuf_t buf; struct rb_vm_tag *prev; enum ruby_tag_type state; - rb_jmpbuf_t buf; }; +STATIC_ASSERT(rb_vm_tag_buf_offset, offsetof(struct rb_vm_tag, buf) > 0); +STATIC_ASSERT(rb_vm_tag_buf_end, + offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < + sizeof(struct rb_vm_tag)); + struct rb_vm_protect_tag { struct rb_vm_protect_tag *prev; }; -- cgit v1.2.3