diff options
author | NARUSE, Yui <naruse@airemix.jp> | 2022-04-12 19:53:43 +0900 |
---|---|---|
committer | NARUSE, Yui <naruse@airemix.jp> | 2022-04-12 19:53:43 +0900 |
commit | 73f45e5e96ccc13a131f7c0122cf8600ce5b930f (patch) | |
tree | b708046606dfc3afa727098a23278133f32be6f5 | |
parent | 53f5fc4236a754ddf94b20dbb70ab63bd5109b18 (diff) |
Just free compiled pattern if no space is used
-rw-r--r-- | regcomp.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -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 |