[commit] r1476 - trunk/GME/Mga

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue Aug 23 16:50:38 CDT 2011


Author: ksmyth
Date: Tue Aug 23 16:50:37 2011
New Revision: 1476

Log:
Fewer exceptions

Modified:
   trunk/GME/Mga/MgaProject.cpp

Modified: trunk/GME/Mga/MgaProject.cpp
==============================================================================
--- trunk/GME/Mga/MgaProject.cpp	Tue Aug 23 14:38:26 2011	(r1475)
+++ trunk/GME/Mga/MgaProject.cpp	Tue Aug 23 16:50:37 2011	(r1476)
@@ -314,6 +314,7 @@
 					CComPtr<IMgaFolder> rf;
 					COMTHROW(get_RootFolder(&rf));
 					COMTHROW(ObjFor(rf)->CheckTree());
+					rf = 0;
 					COMTHROW(CommitTransaction());
 				} catch(hresult_exception &e) {
 					lm->Flush();
@@ -427,6 +428,7 @@
 				CComPtr<IMgaFolder> rf;
 				COMTHROW(get_RootFolder(&rf));
 				COMTHROW(ObjFor(rf)->CheckTree());
+				rf = 0;
 				COMTHROW(CommitTransaction());
 			} catch(hresult_exception &e) {
 				lm->Flush();
@@ -1306,11 +1308,14 @@
 		if(!t->coreterr) COMTHROW(E_MGA_TARGET_DESTROYED);
 		read_only = (mode == TRANSACTION_READ_ONLY);
 		non_nestable = (mode == TRANSACTION_NON_NESTED);
-		COMTHROW(dataproject->BeginTransaction(read_only? TRANSTYPE_READFIRST : TRANSTYPE_FIRST));
+		// this call fails if the project has been closed (maybe we're being called by an FCO destructor)
+		HRESULT hr = dataproject->BeginTransaction(read_only? TRANSTYPE_READFIRST : TRANSTYPE_FIRST);
+		if (FAILED(hr))
+			COMRETURN(hr);
 		checkofftemporary = false;
 		in_nested = false;
 		must_abort = false;
-		HRESULT hr = dataproject->PushTerritory(t->coreterr);
+		hr = dataproject->PushTerritory(t->coreterr);
 		if (FAILED(hr))
 			COMRETURN(hr);
 		baseterr = activeterr = t;


More information about the gme-commit mailing list