aboutsummaryrefslogtreecommitdiffstats
path: root/regexec.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-07-26 15:57:03 -0400
committerPeter Zhu <peter@peterzhu.ca>2023-07-27 13:33:40 -0400
commit7193b404a1a56e50f8046d0382914907020c1559 (patch)
treef0d17c30d36039eab9b8c421e24d412535e05d5e /regexec.c
parente5effa4bd063f454f9f304e6f9fbf9dd8b353a76 (diff)
downloadruby-7193b404a1a56e50f8046d0382914907020c1559.tar.gz
Add function rb_reg_onig_match
rb_reg_onig_match performs preparation, error handling, and cleanup for matching a regex against a string. This reduces repetitive code and removes the need for StringScanner to access internal data of regex.
Diffstat (limited to 'regexec.c')
-rw-r--r--regexec.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/regexec.c b/regexec.c
index b0f73e41d5..ba0e7c2cd2 100644
--- a/regexec.c
+++ b/regexec.c
@@ -888,12 +888,16 @@ onig_region_free(OnigRegion* r, int free_self)
if (r->allocated > 0) {
xfree(r->beg);
xfree(r->end);
- r->allocated = 0;
}
#ifdef USE_CAPTURE_HISTORY
history_root_free(r);
#endif
- if (free_self) xfree(r);
+ if (free_self) {
+ xfree(r);
+ }
+ else {
+ memset(r, 0, sizeof(OnigRegion));
+ }
}
}