diff --git a/Ahuacatl/ahuacatl-bind-parameter.c b/Ahuacatl/ahuacatl-bind-parameter.c index a284004d82..06703fa681 100644 --- a/Ahuacatl/ahuacatl-bind-parameter.c +++ b/Ahuacatl/ahuacatl-bind-parameter.c @@ -100,6 +100,34 @@ bool TRI_EqualBindParameterAql (TRI_associative_pointer_t* array, return TRI_EqualString(key, parameter->_name); } +//////////////////////////////////////////////////////////////////////////////// +/// @brief free bind parameters +//////////////////////////////////////////////////////////////////////////////// + +void TRI_FreeBindParametersAql (TRI_aql_parse_context_t* const context) { + size_t i; + size_t n; + + // iterate thru all parameters allocated + n = context->_parameterValues._nrAlloc; + for (i = 0; i < n; ++i) { + TRI_aql_bind_parameter_t* parameter; + + parameter = (TRI_aql_bind_parameter_t*) context->_parameterValues._table[i]; + + if (!parameter) { + continue; + } + + assert(parameter->_name); + assert(parameter->_value); + + TRI_FreeString(parameter->_name); + TRI_FreeJson(parameter->_value); + TRI_Free(parameter); + } +} + //////////////////////////////////////////////////////////////////////////////// /// @brief add bind parameters //////////////////////////////////////////////////////////////////////////////// diff --git a/Ahuacatl/ahuacatl-bind-parameter.h b/Ahuacatl/ahuacatl-bind-parameter.h index 4f6349c0a0..d918b81500 100644 --- a/Ahuacatl/ahuacatl-bind-parameter.h +++ b/Ahuacatl/ahuacatl-bind-parameter.h @@ -87,6 +87,12 @@ bool TRI_EqualBindParameterAql (TRI_associative_pointer_t*, void const*, void const*); +//////////////////////////////////////////////////////////////////////////////// +/// @brief free bind parameters +//////////////////////////////////////////////////////////////////////////////// + +void TRI_FreeBindParametersAql (TRI_aql_parse_context_t* const); + //////////////////////////////////////////////////////////////////////////////// /// @brief add bind parameters //////////////////////////////////////////////////////////////////////////////// diff --git a/Ahuacatl/ahuacatl-parser.c b/Ahuacatl/ahuacatl-parser.c index 7030b1acfd..565eb0556d 100644 --- a/Ahuacatl/ahuacatl-parser.c +++ b/Ahuacatl/ahuacatl-parser.c @@ -204,6 +204,7 @@ void TRI_FreeParseContextAql (TRI_aql_parse_context_t* const context) { TRI_DestroyAssociativePointer(&context->_parameterNames); // free parameter values + TRI_FreeBindParametersAql(context); TRI_DestroyAssociativePointer(&context->_parameterValues); // free query string