Just free compiled pattern if no space is used
This commit is contained in:
parent
47c3f31fd9
commit
052ec6d258
14
regcomp.c
14
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
|
||||
|
|
|
@ -1344,6 +1344,15 @@ class TestRegexp < Test::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_invalid_group
|
||||
assert_separately([], "#{<<-"begin;"}\n#{<<-'end;'}")
|
||||
begin;
|
||||
assert_raise_with_message(RegexpError, /invalid conditional pattern/) do
|
||||
Regexp.new("((?(1)x|x|)x)+")
|
||||
end
|
||||
end;
|
||||
end
|
||||
|
||||
# This assertion is for porting x2() tests in testpy.py of Onigmo.
|
||||
def assert_match_at(re, str, positions, msg = nil)
|
||||
re = Regexp.new(re) unless re.is_a?(Regexp)
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||
#define RUBY_VERSION_TEENY 4
|
||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||
#define RUBY_PATCHLEVEL 206
|
||||
#define RUBY_PATCHLEVEL 207
|
||||
|
||||
#define RUBY_RELEASE_YEAR 2022
|
||||
#define RUBY_RELEASE_MONTH 4
|
||||
|
|
Loading…
Reference in New Issue