merges r24530 from trunk into ruby_1_9_1.

--
* vm.c (vm_exec): returning from lambda runs ensure section.
  [Bug #1729]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@25480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yugui 2009-10-25 14:46:36 +00:00
parent 3a724e086a
commit 5a1fa79086
3 changed files with 23 additions and 5 deletions

View file

@ -1,3 +1,8 @@
Thu Aug 13 21:01:03 2009 wanabe <s.wanabe@gmail.com>
* vm.c (vm_exec): returning from lambda runs ensure section.
[Bug #1729]
Wed Aug 12 15:52:04 2009 NARUSE, Yui <naruse@ruby-lang.org> Wed Aug 12 15:52:04 2009 NARUSE, Yui <naruse@ruby-lang.org>
* class.c (rb_define_module_id_under): fix the name. * class.c (rb_define_module_id_under): fix the name.

View file

@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.1" #define RUBY_VERSION "1.9.1"
#define RUBY_PATCHLEVEL 286 #define RUBY_PATCHLEVEL 287
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1 #define RUBY_VERSION_TEENY 1

21
vm.c
View file

@ -1114,10 +1114,23 @@ vm_exec(rb_thread_t *th)
SET_THROWOBJ_STATE(err, state = TAG_BREAK); SET_THROWOBJ_STATE(err, state = TAG_BREAK);
} }
else { else {
result = GET_THROWOBJ_VAL(err); for (i = 0; i < cfp->iseq->catch_table_size; i++) {
th->errinfo = Qnil; entry = &cfp->iseq->catch_table[i];
th->cfp += 2; if (entry->start < epc && entry->end >= epc) {
goto finish_vme; if (entry->type == CATCH_TYPE_ENSURE) {
catch_iseqval = entry->iseq;
cont_pc = entry->cont;
cont_sp = entry->sp;
break;
}
}
}
if (!catch_iseqval) {
result = GET_THROWOBJ_VAL(err);
th->errinfo = Qnil;
th->cfp += 2;
goto finish_vme;
}
} }
/* through */ /* through */
} }