Ensure crr->feature is an fstring

This commit is contained in:
John Hawthorn 2025-06-11 13:35:28 -07:00
parent b28f344312
commit ef9301a6b7
Notes: git 2025-06-12 20:14:08 +00:00
2 changed files with 17 additions and 2 deletions

View File

@ -2339,8 +2339,8 @@ rb_ractor_require(VALUE feature)
VALUE crr_obj = TypedData_Make_Struct(0, struct cross_ractor_require, &cross_ractor_require_data_type, crr);
FL_SET_RAW(crr_obj, RUBY_FL_SHAREABLE);
// TODO: make feature shareable
crr->feature = feature;
// Convert feature to proper file path and make it shareable as fstring
crr->feature = rb_fstring(FilePathValue(feature));
crr->port = ractor_port_new(GET_RACTOR());
crr->result = Qundef;
crr->exception = Qundef;

View File

@ -118,6 +118,21 @@ class TestRactor < Test::Unit::TestCase
RUBY
end
def test_require_non_string
assert_ractor(<<~'RUBY')
require "tempfile"
require "pathname"
f = Tempfile.new(["file_to_require_from_ractor", ".rb"])
f.write("puts 'success'")
f.flush
result = Ractor.new(f.path) do |path|
require Pathname.new(path)
"success"
end.value
assert_equal "success", result
RUBY
end
def assert_make_shareable(obj)
refute Ractor.shareable?(obj), "object was already shareable"
Ractor.make_shareable(obj)