]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/dlunix.cpp
[ 1216436 ] cleanup 'shadow variable' warnings from gcc in headers.
[wxWidgets.git] / src / unix / dlunix.cpp
index cad5a9a22e37f9f63edb23a5af638f2f5be901d6..08e2f9b0b81aa1332ea41ffc2bd114b17d8701e9 100644 (file)
@@ -102,7 +102,7 @@ static
 void TranslateError(const char *path, int number)
 {
     unsigned int index;
-    static char *OFIErrorStrings[] =
+    static const char *OFIErrorStrings[] =
     {
         "%s(%d): Object Image Load Failure\n",
         "%s(%d): Object Image Load Success\n",
@@ -110,7 +110,7 @@ void TranslateError(const char *path, int number)
         "%s(%d): No valid architecture\n",
         "%s(%d): Object image has an invalid format\n",
         "%s(%d): Invalid access (permissions?)\n",
-        "%s(%d): Unknown error code from NSCreateObjectFileImageFromFile\n",
+        "%s(%d): Unknown error code from NSCreateObjectFileImageFromFile\n"
     };
 #define NUM_OFI_ERRORS (sizeof(OFIErrorStrings) / sizeof(OFIErrorStrings[0]))
 
@@ -191,24 +191,17 @@ wxDllType wxDynamicLibrary::GetProgramHandle()
 /* static */
 wxDllType wxDynamicLibrary::RawLoad(const wxString& libname, int flags)
 {
-    wxASSERT_MSG( (flags & wxDL_NOW) == 0,
+    wxASSERT_MSG( !(flags & wxDL_NOW) || !(flags & wxDL_LAZY),
                   _T("wxDL_LAZY and wxDL_NOW are mutually exclusive.") );
 
 #ifdef USE_POSIX_DL_FUNCS
-    int rtldFlags = 0;
+    // we need to use either RTLD_NOW or RTLD_LAZY because if we call dlopen()
+    // with flags == 0 recent versions of glibc just fail the call, so use
+    // RTLD_NOW even if wxDL_NOW was not specified
+    int rtldFlags = flags & wxDL_LAZY ? RTLD_LAZY : RTLD_NOW;
 
-    if ( flags & wxDL_LAZY )
-    {
-        rtldFlags |= RTLD_LAZY;
-    }
-    if ( flags & wxDL_NOW )
-    {
-        rtldFlags |= RTLD_NOW;
-    }
     if ( flags & wxDL_GLOBAL )
-    {
         rtldFlags |= RTLD_GLOBAL;
-    }
 
     return dlopen(libname.fn_str(), rtldFlags);
 #else // !USE_POSIX_DL_FUNCS