diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 4a5dec2..f2dcf7c 100644
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -203,20 +203,17 @@
 	return true;
 }
 
-unsigned long long TWFunc::Get_Folder_Size(string Path, bool Display_Error) {
+unsigned long long TWFunc::Get_Folder_Size(const string& Path, bool Display_Error) {
 	DIR* d;
 	struct dirent* de;
 	struct stat st;
-	char path2[4096], filename[4096];
 	unsigned long long dusize = 0;
 	unsigned long long dutemp = 0;
-	// Make a copy of path in case the data in the pointer gets overwritten later
-	strcpy(path2, Path.c_str());
 
-	d = opendir(path2);
+	d = opendir(Path.c_str());
 	if (d == NULL)
 	{
-		LOGE("error opening '%s'\n", path2);
+		LOGE("error opening '%s'\n", Path.c_str());
 		LOGE("error: %s\n", strerror(errno));
 		return 0;
 	}
@@ -225,19 +222,13 @@
 	{
 		if (de->d_type == DT_DIR && strcmp(de->d_name, ".") != 0 && strcmp(de->d_name, "..") != 0)
 		{
-			strcpy(filename, path2);
-			strcat(filename, "/");
-			strcat(filename, de->d_name);
-			dutemp = Get_Folder_Size(filename, Display_Error);
+			dutemp = Get_Folder_Size((Path + "/" + de->d_name), Display_Error);
 			dusize += dutemp;
 			dutemp = 0;
 		}
 		else if (de->d_type == DT_REG)
 		{
-			strcpy(filename, path2);
-			strcat(filename, "/");
-			strcat(filename, de->d_name);
-			stat(filename, &st);
+			stat((Path + "/" + de->d_name).c_str(), &st);
 			dusize += (unsigned long long)(st.st_size);
 		}
 	}
diff --git a/twrp-functions.hpp b/twrp-functions.hpp
index 8cd3445..fc2d647 100644
--- a/twrp-functions.hpp
+++ b/twrp-functions.hpp
@@ -28,7 +28,7 @@
 	static void htc_dumlock_restore_original_boot(void);                        // Restores the backup of boot from HTC Dumlock
 	static void htc_dumlock_reflash_recovery_to_boot(void);                     // Reflashes the current recovery to boot
 	static int Recursive_Mkdir(string Path);                                    // Recursively makes the entire path
-	static unsigned long long Get_Folder_Size(string Path, bool Display_Error); // Gets the size of a folder and all of its subfolders using dirent and stat
+	static unsigned long long Get_Folder_Size(const string& Path, bool Display_Error); // Gets the size of a folder and all of its subfolders using dirent and stat
 	static bool Path_Exists(string Path);                                       // Returns true if the path exists
 	static void GUI_Operation_Text(string Read_Value, string Default_Text);     // Updates text for display in the GUI, e.g. Backing up %partition name%
 	static void GUI_Operation_Text(string Read_Value, string Partition_Name, string Default_Text); // Same as above but includes partition name
