Skip to content

Commit a214323

Browse files
committed
Ensure hard reference for frozen strings
These frozen strings must be hard referenced until the identity has been tested, or an intervening GC could cause them to get collected and improperly fail the test. The cross-require global now points at the string in question and is cleared after the identity test.
1 parent d499524 commit a214323

7 files changed

+11
-8
lines changed

language/fixtures/freeze_magic_comment_across_files.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
require_relative 'freeze_magic_comment_required'
44

5-
p "abc".object_id == $second_literal_id
5+
p "abc".equal?($second_literal)
6+
$second_literal = nil

language/fixtures/freeze_magic_comment_across_files_diff_enc.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
require_relative 'freeze_magic_comment_required_diff_enc'
44

5-
p "abc".object_id != $second_literal_id
5+
p !"abc".equal?($second_literal)
6+
$second_literal = nil

language/fixtures/freeze_magic_comment_across_files_no_comment.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
require_relative 'freeze_magic_comment_required_no_comment'
44

5-
p "abc".object_id != $second_literal_id
5+
p !"abc".equal?($second_literal)
6+
$second_literal = nil
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# frozen_string_literal: true
22

3-
ids = Array.new(2) { "abc".object_id }
4-
p ids.first == ids.last
3+
objs = Array.new(2) { "abc" }
4+
p objs.first.equal?(objs.last)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# frozen_string_literal: true
22

3-
$second_literal_id = "abc".object_id
3+
$second_literal = "abc"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# encoding: euc-jp # built-in for old regexp option
22
# frozen_string_literal: true
33

4-
$second_literal_id = "abc".object_id
4+
$second_literal = "abc"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
$second_literal_id = "abc".object_id
1+
$second_literal = "abc"

0 commit comments

Comments
 (0)