From 06969b6bce13bcfc868a6dd2a0351eac9714291e Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 28 Oct 2013 05:57:04 +0000 Subject: [PATCH] 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 --- ChangeLog | 5 +++++ load.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c058164fc1..cb51cef7a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Oct 28 14:57:01 2013 Nobuyoshi Nakada + + * load.c (ruby_init_ext): share feature names between frame name and + provided features. + Mon Oct 28 14:41:27 2013 Akinori MUSHA * misc/ruby-electric.el: Import ruby-electric.el 2.1 from diff --git a/load.c b/load.c index c5dd4e7e75..327e099d5a 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); } }