]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Minor performance bump by not allocate manager variable struct if we don't need it
authorDavid M. Lee <dlee@digium.com>
Thu, 26 Sep 2013 15:41:47 +0000 (15:41 +0000)
committerDavid M. Lee <dlee@digium.com>
Thu, 26 Sep 2013 15:41:47 +0000 (15:41 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@399887 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/channel.c

index 7ba3e6c39c8e579f9f8bc0f12796229c3e880ce7..e8ce5e0c53d12d026c4ca473ffffa3cf5b093513 100644 (file)
@@ -7549,14 +7549,19 @@ struct varshead *ast_channel_get_manager_vars(struct ast_channel *chan)
        RAII_VAR(struct ast_str *, tmp, NULL, ast_free);
        struct manager_channel_variable *mcv;
 
-       ret = ao2_alloc(sizeof(*ret), varshead_dtor);
-       tmp = ast_str_create(16);
-
        if (!ret || !tmp) {
                return NULL;
        }
 
        AST_RWLIST_RDLOCK(&channelvars);
+
+       if (AST_LIST_EMPTY(&channelvars)) {
+               return NULL;
+       }
+
+       ret = ao2_alloc(sizeof(*ret), varshead_dtor);
+       tmp = ast_str_create(16);
+
        AST_LIST_TRAVERSE(&channelvars, mcv, entry) {
                const char *val = NULL;
                struct ast_var_t *var;