Bug 987910 - Callers of updateFromMatchPairs() must handle error. r=nbp

This commit is contained in:
Sean Stangl 2014-03-25 11:52:25 -07:00
Родитель 45e7b43682
Коммит 5f99db0399
2 изменённых файлов: 13 добавлений и 6 удалений

Просмотреть файл

@ -102,8 +102,10 @@ ExecuteRegExpImpl(JSContext *cx, RegExpStatics *res, RegExpShared &re,
} else {
/* Vector of MatchPairs provided: execute full regexp. */
status = re.execute(cx, chars, length, lastIndex, *matches.u.pairs);
if (status == RegExpRunStatus_Success && res)
res->updateFromMatchPairs(cx, input, *matches.u.pairs);
if (status == RegExpRunStatus_Success && res) {
if (!res->updateFromMatchPairs(cx, input, *matches.u.pairs))
return RegExpRunStatus_Error;
}
}
return status;

Просмотреть файл

@ -1860,7 +1860,8 @@ DoMatchLocal(JSContext *cx, CallArgs args, RegExpStatics *res, Handle<JSLinearSt
return true;
}
res->updateFromMatchPairs(cx, input, matches);
if (!res->updateFromMatchPairs(cx, input, matches))
return false;
RootedValue rval(cx);
if (!CreateRegExpMatchResult(cx, input, matches, &rval))
@ -2172,7 +2173,9 @@ DoMatchForReplaceLocal(JSContext *cx, RegExpStatics *res, Handle<JSLinearString*
if (status == RegExpRunStatus_Success_NotFound)
return true;
res->updateFromMatchPairs(cx, linearStr, matches);
if (!res->updateFromMatchPairs(cx, linearStr, matches))
return false;
return ReplaceRegExp(cx, res, rdata);
}
@ -2193,7 +2196,8 @@ DoMatchForReplaceGlobal(JSContext *cx, RegExpStatics *res, Handle<JSLinearString
if (status == RegExpRunStatus_Success_NotFound)
break;
res->updateFromMatchPairs(cx, linearStr, matches);
if (!res->updateFromMatchPairs(cx, linearStr, matches))
return false;
if (!ReplaceRegExp(cx, res, rdata))
return false;
@ -3290,7 +3294,8 @@ class SplitRegExpMatcher
return true;
}
res->updateFromMatchPairs(cx, str, matches);
if (!res->updateFromMatchPairs(cx, str, matches))
return false;
JSSubString sep;
res->getLastMatch(&sep);