summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-29 03:51:39 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-29 03:51:39 +0000
commitb9432e7630f3a85944730b3ba1b1aa4a8a753612 (patch)
tree3c1ce159a05496750bd33ecda07dc34aa3757c15
parent7e53b3b6bab79ee56de54b8ad62d7026f9a1f603 (diff)
* load.c (rb_provide_feature): clarify error message for frozen
$LOADED_FEATURES. based on a patch from Run Paint Run Run at [ruby-core:31913]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--load.c4
-rw-r--r--test/ruby/test_require.rb7
3 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d003db5365..262b21a068 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sun Aug 29 12:51:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (rb_provide_feature): clarify error message for frozen
+ $LOADED_FEATURES. based on a patch from Run Paint Run Run at
+ [ruby-core:31913].
+
Sun Aug 29 12:19:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* load.c (load_failed): should honor encoding. [ruby-core:31915]
diff --git a/load.c b/load.c
index c956977527..11fcaa4023 100644
--- a/load.c
+++ b/load.c
@@ -250,6 +250,10 @@ rb_feature_provided(const char *feature, const char **loading)
static void
rb_provide_feature(VALUE feature)
{
+ if (OBJ_FROZEN(get_loaded_features())) {
+ rb_raise(rb_eRuntimeError,
+ "$LOADED_FEATURES is frozen; cannot append feature");
+ }
rb_ary_push(get_loaded_features(), feature);
}
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb
index 6de5659e54..f87de90ab9 100644
--- a/test/ruby/test_require.rb
+++ b/test/ruby/test_require.rb
@@ -310,4 +310,11 @@ class TestRequire < Test::Unit::TestCase
}
}
end
+
+ def test_frozen_loaded_features
+ bug3756 = '[ruby-core:31913]'
+ assert_in_out_err(['-e', '$LOADED_FEATURES.freeze; require "ostruct"'], "",
+ [], /\$LOADED_FEATURES is frozen; cannot append feature \(RuntimeError\)$/,
+ bug3756)
+ end
end