diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-03-18 01:28:42 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-03-18 01:28:42 +0000 |
commit | 91282c22ff7b8facf84d267fda0555eb4a17261a (patch) | |
tree | aeee88ffbd06e0bc9b16c4ed7a235e376aedaf13 /main/autoservice.c | |
parent | f4a5d593628f3296611859f69ff24ee3d95535da (diff) |
Improve the build system to *properly* remove unnecessary symbols from the runtime global namespace. Along the way, change the prefixes on some internal-only API calls to use a common prefix.
With these changes, for a module to export symbols into the global namespace, it must have *both* the AST_MODFLAG_GLOBAL_SYMBOLS flag and a linker script that allows the linker to leave the symbols exposed in the module's .so file (see res_odbc.exports for an example).
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@182802 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/autoservice.c')
-rw-r--r-- | main/autoservice.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/main/autoservice.c b/main/autoservice.c index 1150c4c7f..8bcf81742 100644 --- a/main/autoservice.c +++ b/main/autoservice.c @@ -168,15 +168,22 @@ static void *autoservice_run(void *ign) continue; } - if ((dup_f = ast_frdup(defer_frame))) { - AST_LIST_INSERT_HEAD(&ents[i]->deferred_frames, dup_f, frame_list); + if (defer_frame != f) { + if ((dup_f = ast_frdup(defer_frame))) { + AST_LIST_INSERT_HEAD(&ents[i]->deferred_frames, dup_f, frame_list); + } + } else { + if ((dup_f = ast_frisolate(defer_frame))) { + if (dup_f != defer_frame) { + ast_frfree(defer_frame); + } + AST_LIST_INSERT_HEAD(&ents[i]->deferred_frames, dup_f, frame_list); + } } break; } - } - - if (f) { + } else if (f) { ast_frfree(f); } } |