From 72c6497453f74f3398130d99fc610922f3995ae5 Mon Sep 17 00:00:00 2001 From: "NARUSE, Yui" Date: Fri, 12 Mar 2021 00:32:56 +0900 Subject: [PATCH] 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(+) --- bootstraptest/test_ractor.rb | 18 ++++++++++++++++++ ractor.c | 2 ++ 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 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"