From: Kevin Harwell Date: Wed, 25 Jul 2018 20:33:22 +0000 (-0500) Subject: json.c: improve ast_json_to_ast_variables performance X-Git-Tag: 15.6.0-rc1~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2d19f7250cdb9eea10e014df43ae4f7755048eb;p=thirdparty%2Fasterisk.git 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 --- diff --git a/main/json.c b/main/json.c index 7d7bd1d0be..4714519c40 100644 --- a/main/json.c +++ b/main/json.c @@ -1044,6 +1044,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; @@ -1080,7 +1081,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;