solve "duplicate :raise event" in require too [Bug #15877]

This commit is contained in:
Nobuyoshi Nakada 2019-08-08 21:26:31 +09:00
Родитель 3d87b774c4
Коммит 76bd0714cf
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
2 изменённых файлов: 7 добавлений и 2 удалений

1
load.c
Просмотреть файл

@ -1053,7 +1053,6 @@ rb_require_safe(VALUE fname, int safe)
int result = rb_require_internal(fname, safe);
if (result > TAG_RETURN) {
if (result == TAG_RAISE) rb_exc_raise(rb_errinfo());
EC_JUMP_TAG(GET_EC(), result);
}
if (result < 0) {

Просмотреть файл

@ -1676,10 +1676,16 @@ class TestSetTraceFunc < Test::Unit::TestCase
tmpdir = Dir.mktmpdir
path = "#{tmpdir}/hola.rb"
File.open(path, "w") { |f| f.write("raise") }
TracePoint.new(:raise){|tp| next if !target_thread?; events << [tp.event]}.enable{
tp = TracePoint.new(:raise) {|tp| events << [tp.event] if target_thread?}
tp.enable{
load path rescue nil
}
assert_equal [[:raise]], events
events.clear
tp.enable{
require path rescue nil
}
assert_equal [[:raise]], events
ensure
FileUtils.rmtree(tmpdir)
end