summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNARUSE, Yui <naruse@airemix.jp>2021-03-12 00:32:56 +0900
committerNARUSE, Yui <naruse@airemix.jp>2021-03-12 00:32:56 +0900
commit72c6497453f74f3398130d99fc610922f3995ae5 (patch)
treefc3cf0a62c26444d74175b4a3e8a389d04ed3642
parent6305d1c6edeec2c3aa25b9220142274f1ef2e868 (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.rb18
-rw-r--r--ractor.c2
-rw-r--r--version.h4
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
diff --git a/ractor.c b/ractor.c
index 420b2051b2..8de13954ce 100644
--- a/ractor.c
+++ b/ractor.c
@@ -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);
diff --git a/version.h b/version.h
index df2dd51989..24206183b7 100644
--- a/version.h
+++ b/version.h
@@ -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"