From 052ec6d2585c3ace95671013d336f5543624ef3d Mon Sep 17 00:00:00 2001 From: nagachika Date: Tue, 12 Apr 2022 20:07:08 +0900 Subject: Just free compiled pattern if no space is used --- regcomp.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'regcomp.c') diff --git a/regcomp.c b/regcomp.c index 3a438b94c4..bd38313875 100644 --- a/regcomp.c +++ b/regcomp.c @@ -142,8 +142,13 @@ bitset_on_num(BitSetRef bs) static void onig_reg_resize(regex_t *reg) { - resize: - if (reg->alloc > reg->used) { + do { + if (!reg->used) { + xfree(reg->p); + reg->alloc = 0; + reg->p = 0; + } + else if (reg->alloc > reg->used) { unsigned char *new_ptr = xrealloc(reg->p, reg->used); // Skip the right size optimization if memory allocation fails if (new_ptr) { @@ -151,10 +156,7 @@ onig_reg_resize(regex_t *reg) reg->p = new_ptr; } } - if (reg->chain) { - reg = reg->chain; - goto resize; - } + } while ((reg = reg->chain) != 0); } extern int -- cgit v1.2.3