diff --git a/regenc.c b/regenc.c index fc131d2533..eb523e1ae5 100644 --- a/regenc.c +++ b/regenc.c @@ -57,7 +57,7 @@ onigenc_mbclen(const OnigUChar* p,const OnigUChar* e, OnigEncoding enc) int ret = ONIGENC_PRECISE_MBC_ENC_LEN(enc, p, e); if (ONIGENC_MBCLEN_CHARFOUND_P(ret)) { ret = ONIGENC_MBCLEN_CHARFOUND_LEN(ret); - if (ret > (int)(e - p)) ret = (int)(e - p); // just for case + if (p + ret > e) ret = (int)(e - p); // just for case return ret; } else if (ONIGENC_MBCLEN_NEEDMORE_P(ret)) { diff --git a/regexec.c b/regexec.c index 81d0ea6a6b..9e6f503ed0 100644 --- a/regexec.c +++ b/regexec.c @@ -3521,7 +3521,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, n = pend - pstart; DATA_ENSURE(n); sprev = s; - STRING_CMP_IC(case_fold_flag, pstart, &s, (int)n, end); + STRING_CMP_IC(case_fold_flag, pstart, &s, n, end); while (sprev + (len = enclen(encode, sprev, end)) < s) sprev += len;