From 20666f4a4dcba1895cd083c379cd48e98e036631 Mon Sep 17 00:00:00 2001 From: usa Date: Mon, 7 Jul 2014 03:37:35 +0000 Subject: merge revision(s) 45399,45400,46036,46037: [Backport #416] vm.c: merge code * vm.c (m_core_hash_from_ary, m_core_hash_merge_ary): merge duplicated code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@46736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_backtrace.rb | 22 ++++++++++++++++++++++ version.h | 2 +- vm.c | 34 ++++++++++++++++------------------ 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb index 91dec4a943..3d2caf4e76 100644 --- a/test/ruby/test_backtrace.rb +++ b/test/ruby/test_backtrace.rb @@ -162,4 +162,26 @@ class TestBacktrace < Test::Unit::TestCase q << true end end + + def test_core_backtrace_alias + obj = BasicObject.new + e = assert_raise(NameError) do + class << obj + alias foo bar + end + end + /`(.*)'\z/.match e.backtrace[0] + assert_not_match(/\Acore#/, $1) + end + + def test_core_backtrace_undef + obj = BasicObject.new + e = assert_raise(NameError) do + class << obj + undef foo + end + end + /`(.*)'\z/.match e.backtrace[0] + assert_not_match(/\Acore#/, $1) + end end diff --git a/version.h b/version.h index 9d00348255..0044f705d6 100644 --- a/version.h +++ b/version.h @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.0.0" #define RUBY_RELEASE_DATE "2014-07-07" -#define RUBY_PATCHLEVEL 520 +#define RUBY_PATCHLEVEL 521 #define RUBY_RELEASE_YEAR 2014 #define RUBY_RELEASE_MONTH 7 diff --git a/vm.c b/vm.c index 3e25533b67..df8146113c 100644 --- a/vm.c +++ b/vm.c @@ -2137,46 +2137,44 @@ m_core_set_postexe(VALUE self, VALUE iseqval) return Qnil; } +static VALUE m_core_hash_merge_ary(VALUE self, VALUE hash, VALUE ary); + +static VALUE +core_hash_merge(VALUE hash, long argc, const VALUE *argv) +{ + long i; + assert(argc % 2 == 0); + for (i=0; i