From 7312a36629db55dd941d1487758cb3b88bab3c11 Mon Sep 17 00:00:00 2001 From: Alexey Sokolov Date: Sun, 27 Jan 2013 01:26:52 +0700 Subject: [PATCH] Don't lose dlerror() message. Some weird systems seem to use dl functions while doing std::string concatenation... Thanks to Hoss for reporting it --- src/Modules.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Modules.cpp b/src/Modules.cpp index 5556c201..4835577e 100644 --- a/src/Modules.cpp +++ b/src/Modules.cpp @@ -1168,7 +1168,9 @@ ModHandle CModules::OpenModule(const CString& sModule, const CString& sModPath, ModHandle p = dlopen((sModPath).c_str(), RTLD_NOW | RTLD_GLOBAL); if (!p) { - sRetMsg = "Unable to open module [" + sModule + "] [" + dlerror() + "]"; + // dlerror() returns pointer to static buffer, which may be overwritten very soon with another dl call + CString sDlError = dlerror(); + sRetMsg = "Unable to open module [" + sModule + "] [" + sDlError + "]"; return NULL; }