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