mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
load.c: fix rb_load_protect condition
* load.c (rb_load_protect): fix the condition to load the found file. fixup of r59155. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1d44d10b48
commit
6f968cab15
5 changed files with 37 additions and 1 deletions
1
ext/-test-/load/protect/extconf.rb
Normal file
1
ext/-test-/load/protect/extconf.rb
Normal file
|
@ -0,0 +1 @@
|
|||
create_makefile('-test-/load/protect')
|
19
ext/-test-/load/protect/protect.c
Normal file
19
ext/-test-/load/protect/protect.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
#include <ruby.h>
|
||||
|
||||
static VALUE
|
||||
load_protect(int argc, VALUE *argv, VALUE self)
|
||||
{
|
||||
int state;
|
||||
VALUE path, wrap;
|
||||
rb_scan_args(argc, argv, "11", &path, &wrap);
|
||||
rb_load_protect(path, RTEST(wrap), &state);
|
||||
if (state) rb_jump_tag(state);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
void
|
||||
Init_protect(void)
|
||||
{
|
||||
VALUE mod = rb_define_module("Bug");
|
||||
rb_define_singleton_method(mod, "load_protect", load_protect, -1);
|
||||
}
|
2
load.c
2
load.c
|
@ -677,7 +677,7 @@ rb_load_protect(VALUE fname, int wrap, int *pstate)
|
|||
}
|
||||
POP_TAG();
|
||||
|
||||
if (state != TAG_NONE) state = rb_load_internal0(GET_THREAD(), path, wrap);
|
||||
if (state == TAG_NONE) state = rb_load_internal0(GET_THREAD(), path, wrap);
|
||||
if (state != TAG_NONE) *pstate = state;
|
||||
}
|
||||
|
||||
|
|
2
test/-ext-/load/script.rb
Normal file
2
test/-ext-/load/script.rb
Normal file
|
@ -0,0 +1,2 @@
|
|||
# frozen_string_literal: true
|
||||
raise "foo"
|
14
test/-ext-/load/test_protect.rb
Normal file
14
test/-ext-/load/test_protect.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
require 'test/unit'
|
||||
require '-test-/load/protect'
|
||||
|
||||
class Test_Load_Protect < Test::Unit::TestCase
|
||||
def test_load_protect
|
||||
assert_raise(LoadError) {
|
||||
Bug.load_protect(__dir__+"/nonexistent.rb")
|
||||
}
|
||||
assert_raise_with_message(RuntimeError, "foo") {
|
||||
Bug.load_protect(__dir__+"/script.rb")
|
||||
}
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue