aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-07-27 09:42:42 -0400
committerPeter Zhu <peter@peterzhu.ca>2023-07-27 09:42:42 -0400
commite27eab2f85f3d16a822b5c239d44d6fb34d72e5f (patch)
treea2f165ae898ffb8b3b73871a9a2b970ba2e0f0ff
parentccca097cb54e3c23fb2e9a83dacfffa84acdcad8 (diff)
downloadruby-e27eab2f85f3d16a822b5c239d44d6fb34d72e5f.tar.gz
[ruby/strscan] Sync missed commit
Syncs commit ruby/strscan@76b377a5d875ec77282d9319d62d8f24fe283b40.
-rw-r--r--ext/strscan/strscan.c4
-rw-r--r--test/strscan/test_stringscanner.rb1
2 files changed, 4 insertions, 1 deletions
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?(/(?<f>foo)(?<r>bar)(?<z>baz)/))
assert_equal({"f" => "foo", "r" => "bar", "z" => "baz"}, scan.named_captures)
end