1.1 --- a/core/systems/LibrarySys.cpp Sun Apr 06 17:54:53 2008 +0000
1.2 +++ b/core/systems/LibrarySys.cpp Tue Apr 08 23:35:58 2008 +0000
1.3 @@ -286,11 +286,23 @@
1.4 maxlength,
1.5 NULL);
1.6 #elif defined PLATFORM_POSIX
1.7 - snprintf(error, maxlength, "%s", strerror(errno));
1.8 + UTIL_Format(error, maxlength, "%s", strerror(errno));
1.9 #endif
1.10 }
1.11 }
1.12
1.13 +void LibrarySystem::GetLoaderError(char *buffer, size_t maxlength)
1.14 +{
1.15 +#if defined PLATFORM_WINDOWS
1.16 + GetPlatformError(buffer, maxlength);
1.17 +#elif defined PLATFORM_POSIX
1.18 + if (buffer != NULL && maxlength)
1.19 + {
1.20 + strncopy(buffer, dlerror(), maxlength);
1.21 + }
1.22 +#endif
1.23 +}
1.24 +
1.25 void LibrarySystem::CloseDirectory(IDirectory *dir)
1.26 {
1.27 delete dir;
1.28 @@ -301,19 +313,15 @@
1.29 LibraryHandle lib;
1.30 #if defined PLATFORM_WINDOWS
1.31 lib = LoadLibraryA(path);
1.32 - if (!lib)
1.33 - {
1.34 - GetPlatformError(error, maxlength);
1.35 - return false;
1.36 - }
1.37 #elif defined PLATFORM_POSIX
1.38 lib = dlopen(path, RTLD_NOW);
1.39 - if (!lib)
1.40 +#endif
1.41 +
1.42 + if (lib == NULL)
1.43 {
1.44 - GetPlatformError(error, maxlength);
1.45 - return false;
1.46 + GetLoaderError(error, maxlength);
1.47 + return NULL;
1.48 }
1.49 -#endif
1.50
1.51 return new CLibrary(lib);
1.52 }