Do not expect RSTRING_PTR valid after rb_fstring

This commit is contained in:
Nobuyoshi Nakada 2019-08-05 10:51:52 +09:00
Родитель 29092d35d3
Коммит 8cfa3d861c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
1 изменённых файлов: 2 добавлений и 2 удалений

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

@ -1015,7 +1015,7 @@ rb_require_internal(VALUE fname, int safe)
RUBY_DTRACE_HOOK(FIND_REQUIRE_RETURN, RSTRING_PTR(fname)); RUBY_DTRACE_HOOK(FIND_REQUIRE_RETURN, RSTRING_PTR(fname));
if (found) { if (found) {
if (!path || !(path = rb_fstring(path), ftptr = load_lock(RSTRING_PTR(path)))) { if (!path || !(ftptr = load_lock(RSTRING_PTR(path)))) {
result = 0; result = 0;
} }
else if (!*ftptr) { else if (!*ftptr) {
@ -1042,7 +1042,7 @@ rb_require_internal(VALUE fname, int safe)
} }
} }
EC_POP_TAG(); EC_POP_TAG();
load_unlock(ftptr, !state); if (ftptr) load_unlock(RSTRING_PTR(path), !state);
rb_set_safe_level_force(saved.safe); rb_set_safe_level_force(saved.safe);
if (state) { if (state) {