Index: load.c =================================================================== --- a/load.c (revision 43448) +++ b/load.c (revision 43449) @@ -1013,9 +1013,11 @@ { 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); } }