diff --git a/data.cpp b/data.cpp
index 7f87b67..56df350 100644
--- a/data.cpp
+++ b/data.cpp
@@ -653,14 +653,14 @@
 
     mConstValues.insert(make_pair(TW_REBOOT_SYSTEM, "1"));
 #ifdef TW_NO_REBOOT_RECOVERY
-	printf("RECOVERY_SDCARD_ON_DATA := true\n");
+	printf("TW_NO_REBOOT_RECOVERY := true\n");
 	mConstValues.insert(make_pair(TW_REBOOT_RECOVERY, "0"));
 #else
 	mConstValues.insert(make_pair(TW_REBOOT_RECOVERY, "1"));
 #endif
     mConstValues.insert(make_pair(TW_REBOOT_POWEROFF, "1"));
 #ifdef TW_NO_REBOOT_BOOTLOADER
-	printf("RECOVERY_SDCARD_ON_DATA := true\n");
+	printf("TW_NO_REBOOT_BOOTLOADER := true\n");
 	mConstValues.insert(make_pair(TW_REBOOT_BOOTLOADER, "0"));
 #else
 	mConstValues.insert(make_pair(TW_REBOOT_BOOTLOADER, "1"));
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
