diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2010-04-27 22:20:19 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2010-04-27 22:20:19 +0000 |
| commit | 647b536f27bfb52e45213a75d5dc38e07c13eb0c (patch) | |
| tree | 341b36257d05347ee13c1662af7f30e945a7e500 /cpp/src/qpid/Modules.cpp | |
| parent | 9cba4c65c2be490a61a324431bacfbb79907ca60 (diff) | |
| download | qpid-python-647b536f27bfb52e45213a75d5dc38e07c13eb0c.tar.gz | |
Avoid possible initialisation dependency problem by using a "static
singleton" pattern for plugin module file suffix
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@938700 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/Modules.cpp')
| -rw-r--r-- | cpp/src/qpid/Modules.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/cpp/src/qpid/Modules.cpp b/cpp/src/qpid/Modules.cpp index 70549bd553..8f58df6ed1 100644 --- a/cpp/src/qpid/Modules.cpp +++ b/cpp/src/qpid/Modules.cpp @@ -33,14 +33,17 @@ namespace fs=boost::filesystem; namespace { // CMake sets QPID_MODULE_SUFFIX; Autoconf doesn't, so assume Linux .so -#if defined (QPID_MODULE_SUFFIX) - std::string suffix(QPID_MODULE_SUFFIX); -#else - std::string suffix(".so"); +#ifndef QPID_MODULE_SUFFIX +#define QPID_MODULE_SUFFIX ".so" #endif +inline std::string& suffix() { + static std::string s(QPID_MODULE_SUFFIX); + return s; +} + bool isShlibName(const std::string& name) { - return name.find (suffix) == name.length() - suffix.length(); + return name.find (suffix()) == name.length() - suffix().length(); } } @@ -58,7 +61,7 @@ ModuleOptions::ModuleOptions(const std::string& defaultModuleDir) void tryShlib(const char* libname_, bool noThrow) { std::string libname(libname_); - if (!isShlibName(libname)) libname += suffix; + if (!isShlibName(libname)) libname += suffix(); try { sys::Shlib shlib(libname); QPID_LOG (info, "Loaded Module: " << libname); |
