summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-28 05:57:04 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-28 05:57:04 +0000
commit06969b6bce13bcfc868a6dd2a0351eac9714291e (patch)
treeacab13cb51aebd47eeb91accc98c25d5a2bdc4d0
parent3701549796071f3d11930fb81494da8bde263462 (diff)
load.c: share feature names
* load.c (ruby_init_ext): share feature names between frame name and provided features. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--load.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index c058164..cb51cef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 28 14:57:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * load.c (ruby_init_ext): share feature names between frame name and
+ provided features.
+
Mon Oct 28 14:41:27 2013 Akinori MUSHA <knu@iDaemons.org>
* misc/ruby-electric.el: Import ruby-electric.el 2.1 from
diff --git a/load.c b/load.c
index c5dd4e7..327e099 100644
--- a/load.c
+++ b/load.c
@@ -1013,9 +1013,11 @@ ruby_init_ext(const char *name, void (*init)(void))
{
char* const lock_key = load_lock(name);
if (lock_key) {
+ VALUE feature = rb_usascii_str_new_cstr(name);
+ OBJ_FREEZE(feature);
rb_vm_call_cfunc(rb_vm_top_self(), init_ext_call, (VALUE)init,
- 0, rb_str_new2(name));
- rb_provide(name);
+ 0, feature);
+ rb_provide_feature(feature);
load_unlock(lock_key, 1);
}
}