ensure that unload_dynamic_module won't continue dereferencing a module pointer after the module has been unloaded from memory

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Kevin P. Fleming 19 years ago
parent 3a83fbed5b
commit a757ca2947

@ -323,9 +323,14 @@ static struct ast_module *find_resource(const char *resource, int do_lock)
#if LOADABLE_MODULES #if LOADABLE_MODULES
static void unload_dynamic_module(struct ast_module *mod) static void unload_dynamic_module(struct ast_module *mod)
{ {
if (mod->lib) void *lib = mod->lib;
while (!dlclose(mod->lib));
/* WARNING: the structure pointed to by mod is now gone! */ /* WARNING: the structure pointed to by mod is going to
disappear when this operation succeeds, so we can't
dereference it */
if (lib)
while (!dlclose(lib));
} }
static struct ast_module *load_dynamic_module(const char *resource_in, unsigned int global_symbols_only) static struct ast_module *load_dynamic_module(const char *resource_in, unsigned int global_symbols_only)

Loading…
Cancel
Save