From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: spew@80x24.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id CE4A4659015 for ; Sat, 4 Jul 2015 21:14:32 +0000 (UTC) From: Eric Wong To: spew@80x24.org Subject: [PATCH] load.c: prevent enumerator load search Date: Sat, 4 Jul 2015 21:14:32 +0000 Message-Id: <1436044472-18990-1-git-send-email-e@80x24.org> List-Id: This violates rubyspec, but passes "make check" 1) Kernel#require (file extensions) loads a .rb extensioned file when a C-extension file of the same name is loaded FAILED Expected false to be true /ruby/spec/rubyspec/core/kernel/shared/require.rb:258:in `block (3 levels) in ' /ruby/spec/rubyspec/core/kernel/require_spec.rb:5:in `' 2) Kernel#require ($LOAD_FEATURES) when a non-extensioned file is in $LOADED_FEATURES loads a .rb extensioned file when a non extensioned file is in $LOADED_FEATURES FAILED Expected false to be true /ruby/spec/rubyspec/core/kernel/shared/require.rb:366:in `block (4 levels) in ' /ruby/spec/rubyspec/core/kernel/require_spec.rb:5:in `' 3) Kernel.require (file extensions) loads a .rb extensioned file when a C-extension file of the same name is loaded FAILED Expected false to be true /ruby/spec/rubyspec/core/kernel/shared/require.rb:258:in `block (3 levels) in ' /ruby/spec/rubyspec/core/kernel/require_spec.rb:24:in `' 4) Kernel.require ($LOAD_FEATURES) when a non-extensioned file is in $LOADED_FEATURES loads a .rb extensioned file when a non extensioned file is in $LOADED_FEATURES FAILED Expected false to be true /ruby/spec/rubyspec/core/kernel/shared/require.rb:366:in `block (4 levels) in ' /ruby/spec/rubyspec/core/kernel/require_spec.rb:24:in `' --- load.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/load.c b/load.c index 91122c7..2fcca1e 100644 --- a/load.c +++ b/load.c @@ -897,6 +897,10 @@ search_required(VALUE fname, volatile VALUE *path, int safe_level) if (loading) *path = rb_filesystem_str_new_cstr(loading); return 'r'; } + + if (ft) + goto statically_linked; + tmp = fname; type = rb_find_file_ext_safe(&tmp, loadable_ext, safe_level); switch (type) { -- EW