mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
check before access.
* vm_insnhelper.c (vm_push_frame): validate prev_frame because prev_frame can be the end of frame. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
00c9a6188b
commit
2d4a268cd3
1 changed files with 3 additions and 2 deletions
|
@ -271,9 +271,10 @@ vm_push_frame(rb_execution_context_t *ec,
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
rb_control_frame_t *prev_cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
|
rb_control_frame_t *prev_cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
|
||||||
|
if (RUBY_VM_END_CONTROL_FRAME(ec) != prev_cfp) {
|
||||||
int cur_ruby_frame = VM_FRAME_RUBYFRAME_P(cfp);
|
int cur_ruby_frame = VM_FRAME_RUBYFRAME_P(cfp);
|
||||||
int pre_ruby_frame = VM_FRAME_RUBYFRAME_P(prev_cfp);
|
int pre_ruby_frame = VM_FRAME_RUBYFRAME_P(prev_cfp);
|
||||||
if (RUBY_VM_END_CONTROL_FRAME(ec) != prev_cfp) {
|
|
||||||
pre_ruby_frame ? (cur_ruby_frame ? RB_DEBUG_COUNTER_INC(frame_R2R) :
|
pre_ruby_frame ? (cur_ruby_frame ? RB_DEBUG_COUNTER_INC(frame_R2R) :
|
||||||
RB_DEBUG_COUNTER_INC(frame_R2C)):
|
RB_DEBUG_COUNTER_INC(frame_R2C)):
|
||||||
(cur_ruby_frame ? RB_DEBUG_COUNTER_INC(frame_C2R) :
|
(cur_ruby_frame ? RB_DEBUG_COUNTER_INC(frame_C2R) :
|
||||||
|
|
Loading…
Add table
Reference in a new issue