Refactor err string in rb_reg_prepare_re

This commit is contained in:
Peter Zhu 2023-07-27 14:04:02 -04:00
parent 7193b404a1
commit 511c51e116

7
re.c
View File

@ -1576,7 +1576,7 @@ rb_reg_prepare_enc(VALUE re, VALUE str, int warn)
} }
static regex_t * static regex_t *
rb_reg_prepare_re(VALUE re, VALUE str, onig_errmsg_buffer err) rb_reg_prepare_re(VALUE re, VALUE str)
{ {
regex_t *reg = RREGEXP_PTR(re); regex_t *reg = RREGEXP_PTR(re);
int r; int r;
@ -1592,6 +1592,7 @@ rb_reg_prepare_re(VALUE re, VALUE str, onig_errmsg_buffer err)
reg = RREGEXP_PTR(re); reg = RREGEXP_PTR(re);
pattern = RREGEXP_SRC_PTR(re); pattern = RREGEXP_SRC_PTR(re);
onig_errmsg_buffer err = "";
unescaped = rb_reg_preprocess( unescaped = rb_reg_preprocess(
pattern, pattern + RREGEXP_SRC_LEN(re), enc, pattern, pattern + RREGEXP_SRC_LEN(re), enc,
&fixed_enc, err, 0); &fixed_enc, err, 0);
@ -1625,8 +1626,7 @@ rb_reg_onig_match(VALUE re, VALUE str,
OnigPosition (*match)(regex_t *reg, VALUE str, struct re_registers *regs, void *args), OnigPosition (*match)(regex_t *reg, VALUE str, struct re_registers *regs, void *args),
void *args, struct re_registers *regs) void *args, struct re_registers *regs)
{ {
onig_errmsg_buffer err = ""; regex_t *reg = rb_reg_prepare_re(re, str);
regex_t *reg = rb_reg_prepare_re(re, str, err);
bool tmpreg = reg != RREGEXP_PTR(re); bool tmpreg = reg != RREGEXP_PTR(re);
if (!tmpreg) RREGEXP(re)->usecnt++; if (!tmpreg) RREGEXP(re)->usecnt++;
@ -1648,6 +1648,7 @@ rb_reg_onig_match(VALUE re, VALUE str,
onig_region_free(regs, 0); onig_region_free(regs, 0);
if (result != ONIG_MISMATCH) { if (result != ONIG_MISMATCH) {
onig_errmsg_buffer err = "";
onig_error_code_to_str((UChar*)err, (int)result); onig_error_code_to_str((UChar*)err, (int)result);
rb_reg_raise(RREGEXP_SRC_PTR(re), RREGEXP_SRC_LEN(re), err, re); rb_reg_raise(RREGEXP_SRC_PTR(re), RREGEXP_SRC_LEN(re), err, re);
} }