1
0
Fork 0

fixed undefined behavior

This commit is contained in:
jsteemann 2015-11-19 00:16:00 +01:00
parent c6894549c7
commit f900090584
3 changed files with 8 additions and 4 deletions

View File

@ -103,6 +103,9 @@ v2.8.0 (XXXX-XX-XX)
v2.7.2 (XXXX-XX-XX)
-------------------
* fixed undefined behavior when accessing the top level of a document with the `[*]`
operator
* fixed potentially invalid pointer access in shaper when the currently accessed
document got re-located by the WAL collector at the very same time

View File

@ -529,7 +529,7 @@ AqlValue Expression::executeSimpleExpression (AstNode const* node,
case NODE_TYPE_EXPANSION:
return executeSimpleExpressionExpansion(node, trx, argv, startPos, vars, regs);
case NODE_TYPE_ITERATOR:
return executeSimpleExpressionIterator(node, trx, argv, startPos, vars, regs);
return executeSimpleExpressionIterator(node, collection, trx, argv, startPos, vars, regs);
case NODE_TYPE_OPERATOR_BINARY_PLUS:
case NODE_TYPE_OPERATOR_BINARY_MINUS:
case NODE_TYPE_OPERATOR_BINARY_TIMES:
@ -1290,6 +1290,7 @@ AqlValue Expression::executeSimpleExpressionExpansion (AstNode const* node,
////////////////////////////////////////////////////////////////////////////////
AqlValue Expression::executeSimpleExpressionIterator (AstNode const* node,
TRI_document_collection_t const** collection,
triagens::arango::AqlTransaction* trx,
AqlItemBlock const* argv,
size_t startPos,
@ -1298,9 +1299,8 @@ AqlValue Expression::executeSimpleExpressionIterator (AstNode const* node,
TRI_ASSERT(node != nullptr);
TRI_ASSERT(node->numMembers() == 2);
// intentionally do not stringify node 0
TRI_document_collection_t const* myCollection = nullptr;
return executeSimpleExpression(node->getMember(1), &myCollection, trx, argv, startPos, vars, regs, true);
*collection = nullptr;
return executeSimpleExpression(node->getMember(1), collection, trx, argv, startPos, vars, regs, true);
}
////////////////////////////////////////////////////////////////////////////////

View File

@ -485,6 +485,7 @@ namespace triagens {
////////////////////////////////////////////////////////////////////////////////
AqlValue executeSimpleExpressionIterator (AstNode const*,
TRI_document_collection_t const**,
triagens::arango::AqlTransaction*,
AqlItemBlock const*,
size_t,