Преглед на файлове

GDNative Unix: fix shared lib loading, dlopen expects leading ./ to interpret as relative path.

Robin Hübner преди 7 години
родител
ревизия
8287441955
променени са 1 файла, в които са добавени 6 реда и са изтрити 0 реда
  1. 6 0
      drivers/unix/os_unix.cpp

+ 6 - 0
drivers/unix/os_unix.cpp

@@ -349,6 +349,12 @@ Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle
 
 	String path = p_path;
 
+	if (FileAccess::exists(path) && path.is_rel_path()) {
+		// dlopen expects a slash, in this case a leading ./ for it to be interpreted as a relative path,
+		//  otherwise it will end up searching various system directories for the lib instead and finally failing.
+		path = "./" + path;
+	}
+
 	if (!FileAccess::exists(path)) {
 		//this code exists so gdnative can load .so files from within the executable path
 		path = get_executable_path().get_base_dir().plus_file(p_path.get_file());