Bug 220703: return either error or return to avoid crashes and leaks
r/sr=peterv git-svn-id: svn://10.0.0.236/trunk@148221 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
7abb8a983f
commit
4ae76db4ec
@ -125,9 +125,6 @@ txExprLexer::parse(const nsASingleFragmentString& aPattern)
|
||||
iterator start, end;
|
||||
start = aPattern.BeginReading(mPosition);
|
||||
aPattern.EndReading(end);
|
||||
if (start == end) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-- initialize previous token, this will automatically get
|
||||
//-- deleted when it goes out of scope
|
||||
|
||||
@ -179,9 +179,6 @@ txExprParser::createExpr(const nsASingleFragmentString& aExpression,
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aExpr);
|
||||
*aExpr = nsnull;
|
||||
if (aExpression.IsEmpty()) {
|
||||
return NS_OK;
|
||||
}
|
||||
txExprLexer lexer;
|
||||
nsresult rv = lexer.parse(aExpression);
|
||||
if (NS_FAILED(rv)) {
|
||||
@ -192,6 +189,8 @@ txExprParser::createExpr(const nsASingleFragmentString& aExpression,
|
||||
}
|
||||
rv = createExpr(lexer, aContext, aExpr);
|
||||
if (NS_SUCCEEDED(rv) && lexer.peek()->mType != Token::END) {
|
||||
delete *aExpr;
|
||||
*aExpr = nsnull;
|
||||
rv = NS_ERROR_XPATH_BINARY_EXPECTED;
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user