From 059e1e3bc87c1c58db5b144af954e81e9570dcc9 Mon Sep 17 00:00:00 2001 From: Kevin Harwell Date: Wed, 25 Jul 2018 15:33:22 -0500 Subject: [PATCH] json.c: improve ast_json_to_ast_variables performance When converting from a json object to an ast variables list the conversion algorithm was doing a complete traversal of the entire variables list for every item appended from the json structure. This patch makes it so the list is no longer traversed for each new ast variable being appended. Change-Id: I8bf496a1fc449485150d6db36bfc0354934a3977 --- main/json.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main/json.c b/main/json.c index 1837b5bc5d..0cfeac89c9 100644 --- a/main/json.c +++ b/main/json.c @@ -1046,6 +1046,7 @@ struct ast_json *ast_json_party_id(struct ast_party_id *party) enum ast_json_to_ast_vars_code ast_json_to_ast_variables(struct ast_json *json_variables, struct ast_variable **variables) { struct ast_json_iter *it_json_var; + struct ast_variable *tail = NULL; *variables = NULL; @@ -1082,7 +1083,7 @@ enum ast_json_to_ast_vars_code ast_json_to_ast_variables(struct ast_json *json_v return AST_JSON_TO_AST_VARS_CODE_OOM; } - ast_variable_list_append(variables, new_var); + tail = ast_variable_list_append_hint(variables, tail, new_var); } return AST_JSON_TO_AST_VARS_CODE_SUCCESS;