From d7a6ff8224519005d2deeb3f4e98689a8a0835ad Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 3 Jan 2026 15:03:57 +0900 Subject: [PATCH] [Bug #21819] Data objects without members should also be frozen --- struct.c | 1 + test/ruby/test_data.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/struct.c b/struct.c index 667d35424f..31df3798cb 100644 --- a/struct.c +++ b/struct.c @@ -1809,6 +1809,7 @@ rb_data_initialize_m(int argc, const VALUE *argv, VALUE self) if (num_members > 0) { rb_exc_raise(rb_keyword_error_new("missing", members)); } + OBJ_FREEZE(self); return Qnil; } if (argc > 1 || !RB_TYPE_P(argv[0], T_HASH)) { diff --git a/test/ruby/test_data.rb b/test/ruby/test_data.rb index dd698fdcc4..5ac4c6b84b 100644 --- a/test/ruby/test_data.rb +++ b/test/ruby/test_data.rb @@ -262,6 +262,7 @@ class TestData < Test::Unit::TestCase assert_equal('#', test.inspect) assert_equal([], test.members) assert_equal({}, test.to_h) + assert_predicate(test, :frozen?) end def test_dup