[前][次][番号順一覧][スレッド一覧]

ruby-changes:74128

From: Jemma <ko1@a...>
Date: Thu, 20 Oct 2022 03:06:36 +0900 (JST)
Subject: [ruby-changes:74128] 0aaa6133ed (master): Transition frozen string to frozen root shape

https://git.ruby-lang.org/ruby.git/commit/?id=0aaa6133ed

From 0aaa6133ed7365e5037ccdac8b59b00fb13aa50e Mon Sep 17 00:00:00 2001
From: Jemma Issroff <jemmaissroff@g...>
Date: Wed, 19 Oct 2022 09:30:41 -0400
Subject: Transition frozen string to frozen root shape

Co-Authored-By: Aaron Patterson <tenderlove@r...>
---
 shape.c                                  |  8 --------
 spec/ruby/optional/capi/shared/rbasic.rb |  2 +-
 test/ruby/test_string.rb                 | 12 ++++++++++++
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/shape.c b/shape.c
index 1b0f1a5dc9..a7a800ca3c 100644
--- a/shape.c
+++ b/shape.c
@@ -203,14 +203,6 @@ rb_shape_transition_shape_frozen(VALUE obj) https://github.com/ruby/ruby/blob/trunk/shape.c#L203
     rb_shape_t* next_shape;
 
     if (shape == rb_shape_get_root_shape()) {
-        switch (BUILTIN_TYPE(obj)) {
-          case T_OBJECT:
-          case T_CLASS:
-          case T_MODULE:
-            break;
-          default:
-            return;
-        }
         next_shape = rb_shape_get_frozen_root_shape();
     }
     else {
diff --git a/spec/ruby/optional/capi/shared/rbasic.rb b/spec/ruby/optional/capi/shared/rbasic.rb
index 99c2044bd7..95c3137143 100644
--- a/spec/ruby/optional/capi/shared/rbasic.rb
+++ b/spec/ruby/optional/capi/shared/rbasic.rb
@@ -10,7 +10,7 @@ describe :rbasic, shared: true do https://github.com/ruby/ruby/blob/trunk/spec/ruby/optional/capi/shared/rbasic.rb#L10
     obj, _ = @data.call
     initial = @specs.get_flags(obj)
     obj.freeze
-    @specs.get_flags(obj).should == @freeze | initial
+    (@specs.get_flags(obj) & 0xFFFF).should == (@freeze | initial) & 0xFFFF
   end
 
   it "supports setting the FREEZE flag" do
diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb
index ab14a3c17b..4add7dfe2f 100644
--- a/test/ruby/test_string.rb
+++ b/test/ruby/test_string.rb
@@ -887,6 +887,18 @@ CODE https://github.com/ruby/ruby/blob/trunk/test/ruby/test_string.rb#L887
     end
   end
 
+  class StringWithIVSet < String
+    def set_iv
+      @foo = 1
+    end
+  end
+
+  def test_ivar_set_after_frozen_dup
+    str = StringWithIVSet.new.freeze
+    str.dup.set_iv
+    assert_raise(FrozenError) { str.set_iv }
+  end
+
   def test_each
     verbose, $VERBOSE = $VERBOSE, nil
 
-- 
cgit v1.2.3


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]