]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix a missing unlock in case of error, and a missing free().
authorEliel C. Sardanons <eliels@gmail.com>
Sat, 16 May 2009 18:32:11 +0000 (18:32 +0000)
committerEliel C. Sardanons <eliels@gmail.com>
Sat, 16 May 2009 18:32:11 +0000 (18:32 +0000)
Always free the allocated memory for a string field, because
we are always using it (not only when xmldocs are enabled).
Also if there is an error allocating memory for the string field
remember to unlock the list of registered applications, before returning.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@194945 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/pbx.c

index 2a10e9b001d9c7165b227e344ddd33d9226eaa14..e01877135587f34cc4b2e25fba8b98c32ab8ead8 100644 (file)
@@ -5358,6 +5358,7 @@ int ast_register_application2(const char *app, int (*execute)(struct ast_channel
        }
 
        if (ast_string_field_init(tmp, 128)) {
+               AST_RWLIST_UNLOCK(&apps);
                ast_free(tmp);
                return -1;
        }
@@ -6653,11 +6654,7 @@ int ast_unregister_application(const char *app)
                        unreference_cached_app(tmp);
                        AST_RWLIST_REMOVE_CURRENT(list);
                        ast_verb(2, "Unregistered application '%s'\n", tmp->name);
-#ifdef AST_XML_DOCS
-                       if (tmp->docsrc == AST_XML_DOC) {
-                               ast_string_field_free_memory(tmp);
-                       }
-#endif
+                       ast_string_field_free_memory(tmp);
                        ast_free(tmp);
                        break;
                }