diff --git a/rehlds/dedicated/src/sys_linux.cpp b/rehlds/dedicated/src/sys_linux.cpp index 22b5d67..db6976b 100644 --- a/rehlds/dedicated/src/sys_linux.cpp +++ b/rehlds/dedicated/src/sys_linux.cpp @@ -227,7 +227,11 @@ long CSys::LoadLibrary(char *lib) Q_snprintf(absolute_lib, sizeof(absolute_lib), "%s/%s", cwd, lib); +#ifdef LAUNCHER_FIXES + void *hDll = dlopen(absolute_lib, RTLD_NOW | RTLD_DEEPBIND | RTLD_LOCAL); +#else // LAUNCHER_FIXES void *hDll = dlopen(absolute_lib, RTLD_NOW); +#endif // LAUNCHER_FIXES if (!hDll) { ErrorMessage(1, dlerror()); diff --git a/rehlds/engine/filesystem_internal.cpp b/rehlds/engine/filesystem_internal.cpp index a7754c6..ca100df 100644 --- a/rehlds/engine/filesystem_internal.cpp +++ b/rehlds/engine/filesystem_internal.cpp @@ -330,7 +330,7 @@ void *FS_LoadLibrary(const char *dllName) #ifdef _WIN32 result = LoadLibraryA(dllName); #else - result = dlopen(dllName, 2); + result = dlopen(dllName, RTLD_NOW); #endif } diff --git a/rehlds/engine/sys_dll.cpp b/rehlds/engine/sys_dll.cpp index 73504ff..390f9ab 100644 --- a/rehlds/engine/sys_dll.cpp +++ b/rehlds/engine/sys_dll.cpp @@ -1067,7 +1067,11 @@ void LoadThisDll(const char *szDllFilename) goto IgnoreThisDLL; } #else // _WIN32 +#ifdef REHLDS_FIXES + void *hDLL = dlopen(szDllFilename, RTLD_NOW | RTLD_DEEPBIND | RTLD_LOCAL); +#else // REHLDS_FIXES void *hDLL = dlopen(szDllFilename, RTLD_NOW); +#endif // REHLDS_FIXES if (!hDLL) { Con_Printf("LoadLibrary failed on %s: %s\n", szDllFilename, dlerror());