From e906fe374c85c1b88f83d8b896cf86f8c685b0ec Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Thu, 11 Oct 2012 14:17:19 +0200 Subject: [PATCH] fixed memory issues --- arangod/Ahuacatl/ahuacatl-codegen.c | 13 ++++++++++--- arangod/Ahuacatl/ahuacatl-context.c | 2 +- arangod/Ahuacatl/ahuacatl-conversions.c | 9 +++++++-- lib/JsonParser/json-parser.c | 4 ++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/arangod/Ahuacatl/ahuacatl-codegen.c b/arangod/Ahuacatl/ahuacatl-codegen.c index be49a9b57b..5e12916130 100644 --- a/arangod/Ahuacatl/ahuacatl-codegen.c +++ b/arangod/Ahuacatl/ahuacatl-codegen.c @@ -802,8 +802,9 @@ static TRI_vector_string_t StoreSymbols (TRI_aql_codegen_js_t* const generator, n = peek->_variables._nrAlloc; for (j = 0; j < n; ++j) { TRI_aql_codegen_variable_t* variable = (TRI_aql_codegen_variable_t*) peek->_variables._table[j]; + char* copy; - if (!variable) { + if (! variable) { continue; } @@ -813,8 +814,14 @@ static TRI_vector_string_t StoreSymbols (TRI_aql_codegen_js_t* const generator, ScopeOutput(generator, " = "); ScopeOutputRegister(generator, variable->_register); ScopeOutput(generator, ";\n"); - - TRI_PushBackVectorString(&variableNames, TRI_DuplicateString(variable->_name)); + + copy = TRI_DuplicateStringZ(TRI_UNKNOWN_MEM_ZONE, variable->_name); + if (copy == NULL) { + generator->_errorCode = TRI_ERROR_OUT_OF_MEMORY; + } + else { + TRI_PushBackVectorString(&variableNames, copy); + } } // break if we reached the top level for loop diff --git a/arangod/Ahuacatl/ahuacatl-context.c b/arangod/Ahuacatl/ahuacatl-context.c index a4914b5bbb..31db6d117e 100644 --- a/arangod/Ahuacatl/ahuacatl-context.c +++ b/arangod/Ahuacatl/ahuacatl-context.c @@ -410,7 +410,7 @@ char* TRI_RegisterStringAql (TRI_aql_context_t* const context, if (deescape) { size_t outLength; - copy = TRI_UnescapeUtf8String(value, length, &outLength); + copy = TRI_UnescapeUtf8StringZ(TRI_UNKNOWN_MEM_ZONE, value, length, &outLength); } else { copy = TRI_DuplicateStringZ(TRI_UNKNOWN_MEM_ZONE, value); diff --git a/arangod/Ahuacatl/ahuacatl-conversions.c b/arangod/Ahuacatl/ahuacatl-conversions.c index 6939cbaff8..a89e8fd987 100644 --- a/arangod/Ahuacatl/ahuacatl-conversions.c +++ b/arangod/Ahuacatl/ahuacatl-conversions.c @@ -341,13 +341,18 @@ bool TRI_ValueJavascriptAql (TRI_string_buffer_t* const buffer, return false; } - escapedString = TRI_EscapeUtf8String(value->_value._string, strlen(value->_value._string), false, &outLength); - if (!escapedString) { + escapedString = TRI_EscapeUtf8StringZ(TRI_UNKNOWN_MEM_ZONE, + value->_value._string, + strlen(value->_value._string), + false, + &outLength); + if (escapedString == NULL) { return false; } if (TRI_AppendStringStringBuffer(buffer, escapedString) != TRI_ERROR_NO_ERROR) { TRI_Free(TRI_UNKNOWN_MEM_ZONE, escapedString); + return false; } diff --git a/lib/JsonParser/json-parser.c b/lib/JsonParser/json-parser.c index d5fd779efd..5e01f4ece0 100644 --- a/lib/JsonParser/json-parser.c +++ b/lib/JsonParser/json-parser.c @@ -2426,7 +2426,7 @@ TRI_json_t* TRI_Json2String (TRI_memory_zone_t* zone, char const* text, char** e if (error != NULL) { if (yyextra._message != NULL) { - *error = TRI_DuplicateString(yyextra._message); + *error = TRI_DuplicateStringZ(zone, yyextra._message); } else { *error = NULL; @@ -2489,7 +2489,7 @@ TRI_json_t* TRI_JsonFile (TRI_memory_zone_t* zone, char const* path, char** erro if (error != NULL) { if (yyextra._message != NULL) { - *error = TRI_DuplicateString(yyextra._message); + *error = TRI_DuplicateStringZ(zone, yyextra._message); } else { *error = NULL;