summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliel C. Sardanons <eliels@gmail.com>2009-05-16 18:32:11 +0000
committerEliel C. Sardanons <eliels@gmail.com>2009-05-16 18:32:11 +0000
commit766972a3cd8262fb06438c2363a0068472b9b627 (patch)
treee3ca05a3ad7e53220fc758d0534334daf5cccf76
parent2595c54876adefe014b06bdc55b8f91c2bddf94c (diff)
Fix a missing unlock in case of error, and a missing free().
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
-rw-r--r--main/pbx.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/main/pbx.c b/main/pbx.c
index 2a10e9b00..e01877135 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -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;
}