Prevent MTP enable on startup if crash detected

Change-Id: Ie1388a8acadf714a29721dd90c7f9a8aa38a860d
diff --git a/mtp/MtpStorage.cpp b/mtp/MtpStorage.cpp
index c726bc6..8a0a451 100755
--- a/mtp/MtpStorage.cpp
+++ b/mtp/MtpStorage.cpp
@@ -652,7 +652,7 @@
 			}
 		}
 	}
-	// handle not foudn on this storage
+	// handle not found on this storage
 	return -1;
 }
 
diff --git a/twrp.cpp b/twrp.cpp
index 469e080..870a732 100644
--- a/twrp.cpp
+++ b/twrp.cpp
@@ -288,22 +288,32 @@
 		OpenRecoveryScript::Run_OpenRecoveryScript();
 	}
 
+#ifdef TW_HAS_MTP
 	// Enable MTP?
-	if (DataManager::GetIntValue(TW_IS_ENCRYPTED) != 0) {
-		if (DataManager::GetIntValue(TW_IS_DECRYPTED) != 0 && DataManager::GetIntValue("tw_mtp_enabled") == 1) {
+	char mtp_crash_check[PROPERTY_VALUE_MAX];
+	property_get("mtp.crash_check", mtp_crash_check, "0");
+	if (strcmp(mtp_crash_check, "0") == 0) {
+		property_set("mtp.crash_check", "1");
+		if (DataManager::GetIntValue(TW_IS_ENCRYPTED) != 0) {
+			if (DataManager::GetIntValue(TW_IS_DECRYPTED) != 0 && DataManager::GetIntValue("tw_mtp_enabled") == 1) {
+				LOGINFO("Enabling MTP during startup\n");
+				if (!PartitionManager.Enable_MTP())
+					PartitionManager.Disable_MTP();
+				else
+					gui_print("MTP Enabled\n");
+			}
+		} else if (DataManager::GetIntValue("tw_mtp_enabled") == 1) {
 			LOGINFO("Enabling MTP during startup\n");
 			if (!PartitionManager.Enable_MTP())
 				PartitionManager.Disable_MTP();
 			else
 				gui_print("MTP Enabled\n");
 		}
-	} else if (DataManager::GetIntValue("tw_mtp_enabled") == 1) {
-		LOGINFO("Enabling MTP during startup\n");
-		if (!PartitionManager.Enable_MTP())
-			PartitionManager.Disable_MTP();
-		else
-			gui_print("MTP Enabled\n");
+		property_set("mtp.crash_check", "0");
+	} else {
+		gui_print_color("warning", "MTP Crashed, not starting MTP on boot.\n");
 	}
+#endif
 
 	// Launch the main GUI
 	gui_start();