diff options
author | NARUSE, Yui <[email protected]> | 2021-03-12 00:32:56 +0900 |
---|---|---|
committer | NARUSE, Yui <[email protected]> | 2021-03-12 00:32:56 +0900 |
commit | 72c6497453f74f3398130d99fc610922f3995ae5 (patch) | |
tree | fc3cf0a62c26444d74175b4a3e8a389d04ed3642 | |
parent | 6305d1c6edeec2c3aa25b9220142274f1ef2e868 (diff) |
merge revision(s) 7b9476fbfab738d1eb01b4b4c4af9a1680513019: [Backport #17642]
Ractor.allocate should not be allowed
Ractor.allocate and Ractor#dup should not be allowed like Thread.
[Bug #17642]
---
bootstraptest/test_ractor.rb | 18 ++++++++++++++++++
ractor.c | 2 ++
2 files changed, 20 insertions(+)
-rw-r--r-- | bootstraptest/test_ractor.rb | 18 | ||||
-rw-r--r-- | ractor.c | 2 | ||||
-rw-r--r-- | version.h | 4 |
3 files changed, 22 insertions, 2 deletions
diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index 1c29a2b799..878b846487 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -8,6 +8,24 @@ assert_equal 'Ractor', %q{ Ractor.new{}.class } +# Ractor.allocate is not supported +assert_equal "[:ok, :ok]", %q{ + rs = [] + begin + Ractor.allocate + rescue => e + rs << :ok if e.message == 'allocator undefined for Ractor' + end + + begin + Ractor.new{}.dup + rescue + rs << :ok if e.message == 'allocator undefined for Ractor' + end + + rs +} + # A Ractor can have a name assert_equal 'test-name', %q{ r = Ractor.new name: 'test-name' do @@ -2047,6 +2047,8 @@ void Init_Ractor(void) { rb_cRactor = rb_define_class("Ractor", rb_cObject); + rb_undef_alloc_func(rb_cRactor); + rb_eRactorError = rb_define_class_under(rb_cRactor, "Error", rb_eRuntimeError); rb_eRactorIsolationError = rb_define_class_under(rb_cRactor, "IsolationError", rb_eRactorError); rb_eRactorRemoteError = rb_define_class_under(rb_cRactor, "RemoteError", rb_eRactorError); @@ -12,11 +12,11 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 52 +#define RUBY_PATCHLEVEL 53 #define RUBY_RELEASE_YEAR 2021 #define RUBY_RELEASE_MONTH 3 -#define RUBY_RELEASE_DAY 11 +#define RUBY_RELEASE_DAY 12 #include "ruby/version.h" |