Explorar o código

BUG: Including file within a namespace{} is dangerous(unless symbols are within an extern C). Also update documentation about special case for MacOSX

Mathieu Malaterre %!s(int64=19) %!d(string=hai) anos
pai
achega
d91bd3dbd3
Modificáronse 2 ficheiros con 19 adicións e 7 borrados
  1. 4 4
      Source/kwsys/DynamicLoader.cxx
  2. 15 3
      Source/kwsys/DynamicLoader.hxx.in

+ 4 - 4
Source/kwsys/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))
     {

+ 15 - 3
Source/kwsys/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@
 {