diff --git a/ChangeLog b/ChangeLog index 17186a0d71..41b75cfa05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 16 14:54:14 2016 Nobuyoshi Nakada + + * variable.c (rb_local_constants_i): exclude private constants + when excluding inherited constants too. [Bug #12345] + Tue Aug 16 14:43:00 2016 Masatoshi SEKI * lib/drb/timeridconv.rb: don't use keeper thread. [Bug #12342] diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index b70e6666ff..3aecccabed 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -1360,6 +1360,8 @@ class TestModule < Test::Unit::TestCase def test_constants_with_private_constant assert_not_include(::TestModule.constants, :PrivateClass) + assert_not_include(::TestModule.constants(true), :PrivateClass) + assert_not_include(::TestModule.constants(false), :PrivateClass) end def test_toplevel_private_constant diff --git a/variable.c b/variable.c index 2c85ae155d..1b875e543c 100644 --- a/variable.c +++ b/variable.c @@ -1999,7 +1999,7 @@ sv_i(st_data_t k, st_data_t v, st_data_t a) static int rb_local_constants_i(st_data_t const_name, st_data_t const_value, st_data_t ary) { - if (rb_is_const_id(const_name)) { + if (rb_is_const_id(const_name) && !RB_CONST_PRIVATE_P((rb_const_entry_t *)const_value)) { rb_ary_push((VALUE)ary, ID2SYM((ID)const_name)); } return ST_CONTINUE; diff --git a/version.h b/version.h index d2b2201590..0c36855c0f 100644 --- a/version.h +++ b/version.h @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.2.6" #define RUBY_RELEASE_DATE "2016-08-16" -#define RUBY_PATCHLEVEL 358 +#define RUBY_PATCHLEVEL 359 #define RUBY_RELEASE_YEAR 2016 #define RUBY_RELEASE_MONTH 8