From e27eab2f85f3d16a822b5c239d44d6fb34d72e5f Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Thu, 27 Jul 2023 09:42:42 -0400 Subject: [ruby/strscan] Sync missed commit Syncs commit ruby/strscan@76b377a5d875ec77282d9319d62d8f24fe283b40. --- ext/strscan/strscan.c | 4 +++- test/strscan/test_stringscanner.rb | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c index f7888e2cf1..9f24287e35 100644 --- a/ext/strscan/strscan.c +++ b/ext/strscan/strscan.c @@ -1502,7 +1502,9 @@ strscan_named_captures(VALUE self) named_captures_data data; data.self = self; data.captures = rb_hash_new(); - onig_foreach_name(RREGEXP_PTR(p->regex), named_captures_iter, &data); + if (!RB_NIL_P(p->regex)) { + onig_foreach_name(RREGEXP_PTR(p->regex), named_captures_iter, &data); + } return data.captures; } diff --git a/test/strscan/test_stringscanner.rb b/test/strscan/test_stringscanner.rb index b7ffac816d..2fce4c3e74 100644 --- a/test/strscan/test_stringscanner.rb +++ b/test/strscan/test_stringscanner.rb @@ -775,6 +775,7 @@ module StringScannerTests def test_named_captures omit("not implemented on TruffleRuby") if ["truffleruby"].include?(RUBY_ENGINE) scan = StringScanner.new("foobarbaz") + assert_equal({}, scan.named_captures) assert_equal(9, scan.match?(/(?foo)(?bar)(?baz)/)) assert_equal({"f" => "foo", "r" => "bar", "z" => "baz"}, scan.named_captures) end -- cgit v1.2.3