Author: ydario
Date: Sat Feb 22 15:17:20 2014
New Revision: 1570848

URL: http://svn.apache.org/r1570848
Log:
#i118923# OS/2 port, ignore ENOENT errors on dlopen() failure.

Modified:
    openoffice/trunk/main/sal/osl/os2/module.c

Modified: openoffice/trunk/main/sal/osl/os2/module.c
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sal/osl/os2/module.c?rev=1570848&r1=1570847&r2=1570848&view=diff
==============================================================================
--- openoffice/trunk/main/sal/osl/os2/module.c (original)
+++ openoffice/trunk/main/sal/osl/os2/module.c Sat Feb 22 15:17:20 2014
@@ -73,7 +73,6 @@ oslModule SAL_CALL osl_loadAsciiModule(c
        char buffer[PATH_MAX];
        char* dot;
        void* hModule;
-       oslModule pModule = NULL;
 
        if (!pszModuleName)
                return NULL;
@@ -99,28 +98,35 @@ oslModule SAL_CALL osl_loadAsciiModule(c
 #if OSL_DEBUG_LEVEL>1
        debug_printf("osl_loadModule module %s", buffer);
 #endif
-       
+
        hModule = dlopen( buffer, RTLD_LOCAL);
        if (hModule != NULL)
-               pModule = (oslModule)hModule;
-       else
-       {
-               sal_Char szError[ PATH_MAX*2 ];
-               sprintf( szError, "Module: %s;\n error: %s;\n\n"
-                                "Please contact technical support and report 
above informations.\n\n", 
-                                buffer, dlerror() );
+               return (oslModule)hModule;
+
+       // do not show in case rc=2 ENOENT, we must parse dlerror
+       // string to detect it
+       char* err = dlerror();
+       if (!err)
+               return NULL;
+
+       if (strstr( err, "rc=2") != NULL)
+               return NULL;
+
+       sal_Char szError[ PATH_MAX*2 ];
+       sprintf( szError, "Module: %s;\n error: %s;\n\n"
+                        "Please contact technical support and report above 
informations.\n\n", 
+                        buffer, err);
 #if OSL_DEBUG_LEVEL>0
-               debug_printf("osl_loadModule error %s", szError);
+       debug_printf("osl_loadModule error %s", szError);
 #endif
-               
+
 #if (OSL_DEBUG_LEVEL==0) || !defined(OSL_DEBUG_LEVEL)
-               WinMessageBox(HWND_DESKTOP,HWND_DESKTOP,
-                                         szError, "Critical error: 
DosLoadModule failed",
-                                         0, MB_ERROR | MB_OK | MB_MOVEABLE);
+       WinMessageBox(HWND_DESKTOP,HWND_DESKTOP,
+                                 szError, "Critical error: DosLoadModule 
failed",
+                                 0, MB_ERROR | MB_OK | MB_MOVEABLE);
 #endif
-       }
 
-       return pModule;
+       return NULL;
 }
 
 /*****************************************************************************/


Reply via email to