diff options
author | John Hawthorn <[email protected]> | 2025-06-11 13:35:28 -0700 |
---|---|---|
committer | John Hawthorn <[email protected]> | 2025-06-12 13:13:55 -0700 |
commit | ef9301a6b747035a113f3c9dfb805214e9285026 (patch) | |
tree | 008526bd9c473c2e356d1b6f5b3850cdaf6ca5b6 | |
parent | b28f3443122c4e5461877d704618c752e56ca8b0 (diff) |
Ensure crr->feature is an fstring
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/13531
-rw-r--r-- | ractor.c | 4 | ||||
-rw-r--r-- | test/ruby/test_ractor.rb | 15 |
2 files changed, 17 insertions, 2 deletions
@@ -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; diff --git a/test/ruby/test_ractor.rb b/test/ruby/test_ractor.rb index 9ad74ef3c9..e463b504d1 100644 --- a/test/ruby/test_ractor.rb +++ b/test/ruby/test_ractor.rb @@ -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) |