Browse Source

Merge pull request #65095 from m4gr3d/update_get_current_dir_main

Additional fixes to the Android `get_current_dir()` implementation.
Rémi Verschelde 3 years ago
parent
commit
c80ea41e3b

+ 1 - 1
core/io/dir_access.h

@@ -55,7 +55,7 @@ private:
 
 protected:
 	String _get_root_path() const;
-	String _get_root_string() const;
+	virtual String _get_root_string() const;
 
 	AccessType get_access_type() const;
 	String fix_path(String p_path) const;

+ 13 - 3
platform/android/dir_access_jandroid.cpp

@@ -135,6 +135,13 @@ String DirAccessJAndroid::get_drive(int p_drive) {
 	}
 }
 
+String DirAccessJAndroid::_get_root_string() const {
+	if (get_access_type() == ACCESS_FILESYSTEM) {
+		return "/";
+	}
+	return DirAccessUnix::_get_root_string();
+}
+
 String DirAccessJAndroid::get_current_dir(bool p_include_drive) const {
 	String base = _get_root_path();
 	String bd = current_dir;
@@ -142,10 +149,13 @@ String DirAccessJAndroid::get_current_dir(bool p_include_drive) const {
 		bd = current_dir.replace_first(base, "");
 	}
 
-	if (bd.begins_with("/")) {
-		return _get_root_string() + bd.substr(1, bd.length());
+	String root_string = _get_root_string();
+	if (bd.begins_with(root_string)) {
+		return bd;
+	} else if (bd.begins_with("/")) {
+		return root_string + bd.substr(1, bd.length());
 	} else {
-		return _get_root_string() + bd;
+		return root_string + bd;
 	}
 }
 

+ 3 - 0
platform/android/dir_access_jandroid.h

@@ -91,6 +91,9 @@ public:
 	DirAccessJAndroid();
 	~DirAccessJAndroid();
 
+protected:
+	String _get_root_string() const override;
+
 private:
 	int id = 0;