From 88a5295363e7c55a6fff48d74ebebfd84a309a85 Mon Sep 17 00:00:00 2001 From: Mathieu Malaterre <mathieu.malaterre@gmail.com> Date: Wed, 8 Mar 2006 09:16:54 -0500 Subject: [PATCH] BUG: Including file within a namespace{} is dangerous(unless symbols are within an extern C). Also update documentation about special case for MacOSX --- DynamicLoader.cxx | 8 ++++---- DynamicLoader.hxx.in | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/DynamicLoader.cxx b/DynamicLoader.cxx index a98f94b..fc82b8f 100644 --- a/DynamicLoader.cxx +++ b/DynamicLoader.cxx @@ -25,9 +25,9 @@ // This file is actually 3 different implementations. // 1. HP machines which uses shl_load -// 2. Power PC MAC which uses GetSharedLibrary +// 2. Mac OS X 10.2.x and earlier which uses NSLinkModule // 3. Windows which uses LoadLibrary -// 4. Most unix systems which use dlopen (default ) +// 4. Most unix systems (including Mac OS X 10.3 and later) which use dlopen (default) // Each part of the ifdef contains a complete implementation for // the static methods of DynamicLoader. @@ -132,7 +132,7 @@ LibHandle DynamicLoader::OpenLibrary(const char* libname ) { NSObjectFileImageReturnCode rc; NSObjectFileImage image = 0; - + rc = NSCreateObjectFileImageFromFile(libname, &image); if(!image) { @@ -150,7 +150,7 @@ int DynamicLoader::CloseLibrary( LibHandle lib) //---------------------------------------------------------------------------- DynamicLoaderFunction DynamicLoader::GetSymbolAddress(LibHandle /* lib */, const char* sym) -{ +{ void *result=0; if(NSIsSymbolNameDefined(sym)) { diff --git a/DynamicLoader.hxx.in b/DynamicLoader.hxx.in index 164ecfb..7419b94 100644 --- a/DynamicLoader.hxx.in +++ b/DynamicLoader.hxx.in @@ -16,28 +16,40 @@ #include <@KWSYS_NAMESPACE@/Configure.h> -namespace @KWSYS_NAMESPACE@ -{ // Ugly stuff for library handles // They are different on several different OS's #if defined(__hpux) #include <dl.h> +namespace @KWSYS_NAMESPACE@ +{ typedef shl_t LibHandle; +} // namespace @KWSYS_NAMESPACE@ #elif defined(_WIN32) #include <windows.h> +namespace @KWSYS_NAMESPACE@ +{ typedef HMODULE LibHandle; +} // namespace @KWSYS_NAMESPACE@ #elif defined(__APPLE__) #include <AvailabilityMacros.h> #if MAC_OS_X_VERSION_MIN_REQUIRED < 1030 #include <mach-o/dyld.h> +namespace @KWSYS_NAMESPACE@ +{ typedef NSModule LibHandle; +} // namespace @KWSYS_NAMESPACE@ #else +namespace @KWSYS_NAMESPACE@ +{ typedef void* LibHandle; +} // namespace @KWSYS_NAMESPACE@ #endif #else +namespace @KWSYS_NAMESPACE@ +{ typedef void* LibHandle; -#endif } // namespace @KWSYS_NAMESPACE@ +#endif namespace @KWSYS_NAMESPACE@ { -- GitLab