Bug #9344 » 9344.patch
| include/ruby/oniguruma.h | ||
|---|---|---|
|
ONIG_EXTERN
|
||
|
void onig_set_warn_func P_((OnigWarnFunc f));
|
||
|
ONIG_EXTERN
|
||
|
void onig_set_verb_warn_func P_((OnigWarnFunc f));
|
||
|
ONIG_EXTERN
|
||
|
int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo));
|
||
|
ONIG_EXTERN
|
||
|
int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax));
|
||
| re.c | ||
|---|---|---|
|
onigenc_set_default_caseconv_table((UChar*)casetable);
|
||
|
onigenc_set_default_encoding(ONIG_ENCODING_ASCII);
|
||
|
onig_set_warn_func(re_warn);
|
||
|
onig_set_verb_warn_func(re_warn);
|
||
|
rb_define_virtual_variable("$~", match_getter, match_setter);
|
||
|
rb_define_virtual_variable("$&", last_match_getter, 0);
|
||
| regparse.c | ||
|---|---|---|
|
static OnigWarnFunc onig_warn = onig_null_warn;
|
||
|
#endif
|
||
|
#ifdef DEFAULT_VERB_WARN_FUNCTION
|
||
|
static OnigWarnFunc onig_verb_warn = (OnigWarnFunc )DEFAULT_VERB_WARN_FUNCTION;
|
||
|
#else
|
||
|
static OnigWarnFunc onig_verb_warn = onig_null_warn;
|
||
|
#endif
|
||
|
extern void onig_set_warn_func(OnigWarnFunc f)
|
||
|
{
|
||
|
onig_warn = f;
|
||
|
}
|
||
|
extern void onig_set_verb_warn_func(OnigWarnFunc f)
|
||
|
{
|
||
|
onig_verb_warn = f;
|
||
|
}
|
||
|
static void CC_DUP_WARN(ScanEnv *env);
|
||
|
static void
|
||
| ... | ... | |
|
#ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR
|
||
|
if (!IS_QUANTIFIER_BY_NUMBER(qn) && !IS_QUANTIFIER_BY_NUMBER(qnt) &&
|
||
|
IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) {
|
||
|
UChar buf[WARN_BUFSIZE];
|
||
|
switch (ReduceTypeTable[targetq_num][nestq_num]) {
|
||
|
case RQ_ASIS:
|
||
|
break;
|
||
|
case RQ_DEL:
|
||
|
if (onig_verb_warn != onig_null_warn) {
|
||
|
onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
|
||
|
env->pattern, env->pattern_end,
|
||
|
(UChar* )"redundant nested repeat operator");
|
||
|
(*onig_verb_warn)((char* )buf);
|
||
|
if (onig_warn != onig_null_warn) {
|
||
|
onig_syntax_warn(env, "regular expression has redundant nested repeat operator '%s'", PopularQStr[targetq_num]);
|
||
|
}
|
||
|
goto warn_exit;
|
||
|
break;
|
||
|
default:
|
||
|
if (onig_verb_warn != onig_null_warn) {
|
||
|
onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
|
||
|
env->pattern, env->pattern_end,
|
||
|
(UChar* )"nested repeat operator %s and %s was replaced with '%s'",
|
||
|
PopularQStr[targetq_num], PopularQStr[nestq_num],
|
||
|
ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]);
|
||
|
(*onig_verb_warn)((char* )buf);
|
||
|
if (onig_warn != onig_null_warn) {
|
||
|
onig_syntax_warn(env, "nested repeat operator '%s' and '%s' was replaced with '%s' in regular expression",
|
||
|
PopularQStr[targetq_num], PopularQStr[nestq_num],
|
||
|
ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]);
|
||
|
}
|
||
|
goto warn_exit;
|
||
|
break;
|
||