From 7193b404a1a56e50f8046d0382914907020c1559 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Wed, 26 Jul 2023 15:57:03 -0400 Subject: 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. --- regexec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'regexec.c') 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)); + } } } -- cgit v1.2.3