diff -r a4e690349275 -r 1967de77ebac core/systems/LibrarySys.cpp --- a/core/systems/LibrarySys.cpp Sun Apr 06 17:54:53 2008 +0000 +++ b/core/systems/LibrarySys.cpp Tue Apr 08 23:35:58 2008 +0000 @@ -286,11 +286,23 @@ maxlength, NULL); #elif defined PLATFORM_POSIX - snprintf(error, maxlength, "%s", strerror(errno)); + UTIL_Format(error, maxlength, "%s", strerror(errno)); #endif } } +void LibrarySystem::GetLoaderError(char *buffer, size_t maxlength) +{ +#if defined PLATFORM_WINDOWS + GetPlatformError(buffer, maxlength); +#elif defined PLATFORM_POSIX + if (buffer != NULL && maxlength) + { + strncopy(buffer, dlerror(), maxlength); + } +#endif +} + void LibrarySystem::CloseDirectory(IDirectory *dir) { delete dir; @@ -301,19 +313,15 @@ LibraryHandle lib; #if defined PLATFORM_WINDOWS lib = LoadLibraryA(path); - if (!lib) - { - GetPlatformError(error, maxlength); - return false; - } #elif defined PLATFORM_POSIX lib = dlopen(path, RTLD_NOW); - if (!lib) +#endif + + if (lib == NULL) { - GetPlatformError(error, maxlength); - return false; + GetLoaderError(error, maxlength); + return NULL; } -#endif return new CLibrary(lib); }