From 39ba6a16f5c0fd1fe40a41d7102b057ef3490a9e Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Sat, 12 Apr 2014 01:35:34 +0000 Subject: [PATCH] func_periodic_hook: move module ref The previous code left one error path where the module would be unref'd twice instead of once. It was done once in the error handling block, and again inside of datastore destruction. Now the module ref is only released in the datastore destructor and only acquired when the datastore has been successfully allocated. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412280 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- funcs/func_periodic_hook.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c index 1f6f3aea98..661ebcbed1 100644 --- a/funcs/func_periodic_hook.c +++ b/funcs/func_periodic_hook.c @@ -300,13 +300,11 @@ static int init_hook(struct ast_channel *chan, const char *context, const char * snprintf(uid, sizeof(uid), "%u", hook_id); - ast_module_ref(ast_module_info->self); if (!(datastore = ast_datastore_alloc(&hook_datastore, uid))) { - ast_module_unref(ast_module_info->self); return -1; } + ast_module_ref(ast_module_info->self); if (!(state = hook_state_alloc(context, exten, interval, hook_id))) { - ast_module_unref(ast_module_info->self); ast_datastore_free(datastore); return -1; }