mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-18 15:49:56 +00:00
Merged revisions 284610 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r284610 | tilghman | 2010-09-02 00:20:59 -0500 (Thu, 02 Sep 2010) | 10 lines When optional_api is non-optional, force dependent modules to be loaded. (closes issue #17707) Reported by: ira Patches: 20100819__issue17707__asterisk1.8.diff.txt uploaded by tilghman (license 14) Tested by: tilghman Review: https://reviewboard.asterisk.org/r/876/ ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@284628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -414,6 +414,26 @@ static struct ast_module *load_dynamic_module(const char *resource_in, unsigned
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* This section is a workaround for a gcc 4.1 bug that has already been
|
||||
* fixed in later versions. Unfortunately, some distributions, such as
|
||||
* RHEL/CentOS 5, distribute gcc 4.1, so we're stuck with having to deal
|
||||
* with this issue. This basically ensures that optional_api modules are
|
||||
* loaded before any module which requires their functionality. */
|
||||
#if !defined(HAVE_ATTRIBUTE_weak_import) && !defined(HAVE_ATTRIBUTE_weakref)
|
||||
if (!ast_strlen_zero(mod->info->nonoptreq)) {
|
||||
/* Force any required dependencies to load */
|
||||
char *each, *required_resource = ast_strdupa(mod->info->nonoptreq);
|
||||
while ((each = strsep(&required_resource, ","))) {
|
||||
each = ast_strip(each);
|
||||
|
||||
/* Is it already loaded? */
|
||||
if (!find_resource(each, 0)) {
|
||||
load_dynamic_module(each, global_symbols_only);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
while (!dlclose(lib));
|
||||
resource_being_loaded = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user