From 8d1a72aa472b0930d2204dad74cc6db9f39ffb44 Mon Sep 17 00:00:00 2001
From: Steve Brokenshire <sbrokenshire@xestia.co.uk>
Date: Sun, 6 Mar 2016 17:25:46 +0000
Subject: [PATCH] If StartupMode is true, ignore doing any MemoryFS clean ups.

---
 source/frmContact.cpp | 71 +++++++++++++++++++++++--------------------
 1 file changed, 38 insertions(+), 33 deletions(-)

diff --git a/source/frmContact.cpp b/source/frmContact.cpp
index ed8f2fb..a94c876 100644
--- a/source/frmContact.cpp
+++ b/source/frmContact.cpp
@@ -50,47 +50,49 @@ void frmContact::CloseWindow( wxCloseEvent& event ){
 
 	wxFileSystem::AddHandler(new wxMemoryFSHandler);
 
-	if (MemoryFSListPtr->find(SessionID) == MemoryFSListPtr->end()){
+	if (StartupMode == false){
+	
+		if (MemoryFSListPtr->find(SessionID) == MemoryFSListPtr->end()){
 
-	} else {
+		} else {
 
-		std::map<wxString, wxString>::iterator striter;
+			std::map<wxString, wxString>::iterator striter;
 
-		for (striter = MemoryFSListPtr->begin(); striter != MemoryFSListPtr->end(); striter++){
+			for (striter = MemoryFSListPtr->begin(); striter != MemoryFSListPtr->end(); striter++){
 
-			if (SessionID == striter->second){
+				if (SessionID == striter->second){
 
-				// Delete the references from the wxMemoryFSHandler
-				// and the entry from the map.
+					// Delete the references from the wxMemoryFSHandler
+					// and the entry from the map.
 
-				wxMemoryFSHandler::RemoveFile(striter->first);
+					wxMemoryFSHandler::RemoveFile(striter->first);
 
-				break;
+					break;
 
-			}
+				}
 
-		}
+			}
 
-		MemoryFSListPtr->erase(striter);
+			MemoryFSListPtr->erase(striter);
 
-	}
+		}
 	
-	WindowData *WData = new WindowData;
+		WindowData *WData = new WindowData;
 
-	WData->DataType = 0;
-	WData->WindowPointer = this;
-	WData->WindowID = ContactUID;
+		WData->DataType = 0;
+		WData->WindowPointer = this;
+		WData->WindowID = ContactUID;
 
-	wxCommandEvent delevent(WINDOW_CLOSE);
-	delevent.SetClientData(WData);
-	wxPostEvent(GetParent(), delevent);
+		wxCommandEvent delevent(WINDOW_CLOSE);
+		delevent.SetClientData(WData);
+		wxPostEvent(GetParent(), delevent);
 	
+	}
+		
 	Destroy();
 
 }
 
-
-
 bool frmContact::SetupContactData(vCard *vCardObj){
 
 	wxFileSystem::AddHandler(new wxMemoryFSHandler);
@@ -113,7 +115,6 @@ bool frmContact::SetupContactData(vCard *vCardObj){
 	OldSessionID = SessionID;
 	SessionID = wxString::Format(wxT("%i"), rand() % 32768);
 	LoadContactData(vCardObj, htmContactData, SessionID, OldSessionID, MemoryFSListPtr);
-	SetTitle(vCardObj->Get(wxT("FN")));
 	ArrayvCardOutData FNList;
 	FNList = vCardObj->GetByPartial(wxT("FN"));
 	
@@ -121,18 +122,22 @@ bool frmContact::SetupContactData(vCard *vCardObj){
 		FNList.PropValues[0].Trim();
 		SetTitle(FNList.PropValues[0]);
 	}
+	
+	if (StartupMode == false){
+	
+		WindowData *WData = new WindowData;
 
-	WindowData *WData = new WindowData;
-
-	vCardFilename = vCardObj->GetFilename();
-
-	WData->DataType = 0;
-	WData->WindowPointer = this;
-	WData->WindowID = ContactUID;
+		vCardFilename = vCardObj->GetFilename();
 
-	wxCommandEvent editevent(WINDOW_EDIT);
-	editevent.SetClientData(WData);
-	wxPostEvent(GetParent(), editevent);
+		WData->DataType = 0;
+		WData->WindowPointer = this;
+		WData->WindowID = ContactUID;
+	
+		wxCommandEvent editevent(WINDOW_EDIT);
+		editevent.SetClientData(WData);
+		wxPostEvent(GetParent(), editevent);
+		
+	}
 
 	return TRUE;
 }
-- 
2.39.5