#860: Assertion fails in pop_current_exception when catch/throw used in rescue ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Description changed by lsansonetti@…: Old description:
{{{ #!ruby $ cat test_catch_throw.rb begin raise rescue catch(:ambiguous) { throw :ambiguous } p :ok end }}}
Result of Ruby 1.9.1: {{{ $ ruby test_catch_throw.rb :ok }}}
Result of MacRuby Trunk: {{{ $ macruby test_catch_throw.rb Assertion failed: ((size_t)pos < current_exceptions.size()), function pop_current_exception, file vm.cpp, line 3343. zsh: abort macruby test_opt.rb }}}+
Original report (involving optparse) which was deleted:
{{{ $ cat test_opt.rb require 'optparse'
opt = OptionParser.new flag = self.class
opt.def_option("--open") {|x|} opt.def_option("-x") {|x| flag = x} opt.def_option("--option") {|x| flag = x}
begin opt.parse!(%w"--op") rescue => e p e end
begin opt.parse!(%w"-o") rescue => e p e end }}}
Result of Ruby 1.9.1: {{{ $ ruby test_opt.rb #<OptionParser::AmbiguousOption: --op> #<OptionParser::AmbiguousOption: -o> }}}
Result of MacRuby Trunk: {{{ $ macruby test_opt.rb #<OptionParser::AmbiguousOption: --op> Assertion failed: ((size_t)pos < current_exceptions.size()), function pop_current_exception, file vm.cpp, line 3343. zsh: abort macruby test_opt.rb }}}
New description: {{{ #!ruby $ cat test_catch_throw.rb begin raise rescue catch(:ambiguous) { throw :ambiguous } p :ok end }}} Result of Ruby 1.9.1: {{{ $ ruby test_catch_throw.rb :ok }}} Result of MacRuby Trunk: {{{ $ macruby test_catch_throw.rb Assertion failed: ((size_t)pos < current_exceptions.size()), function pop_current_exception, file vm.cpp, line 3343. zsh: abort macruby test_opt.rb }}} Original report (involving optparse) which was deleted: {{{ $ cat test_opt.rb require 'optparse' opt = OptionParser.new flag = self.class opt.def_option("--open") {|x|} opt.def_option("-x") {|x| flag = x} opt.def_option("--option") {|x| flag = x} begin opt.parse!(%w"--op") rescue => e p e end begin opt.parse!(%w"-o") rescue => e p e end }}} Result of Ruby 1.9.1: {{{ $ ruby test_opt.rb #<OptionParser::AmbiguousOption: --op> #<OptionParser::AmbiguousOption: -o> }}} Result of MacRuby Trunk: {{{ $ macruby test_opt.rb #<OptionParser::AmbiguousOption: --op> Assertion failed: ((size_t)pos < current_exceptions.size()), function pop_current_exception, file vm.cpp, line 3343. zsh: abort macruby test_opt.rb }}} -- -- Ticket URL: <http://www.macruby.org/trac/ticket/860#comment:7> MacRuby <http://macruby.org/>