[commit] r1846 - trunk/GME/Mga

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Wed Mar 7 11:29:25 CST 2012


Author: ksmyth
Date: Wed Mar  7 11:29:24 2012
New Revision: 1846

Log:
Fix CMgaProject::abortnested() under TRANSACTION_NON_NESTED: the core aborttransaction call would fail, ruining the ErrorInfo

Modified:
   trunk/GME/Mga/MgaProject.cpp

Modified: trunk/GME/Mga/MgaProject.cpp
==============================================================================
--- trunk/GME/Mga/MgaProject.cpp	Tue Feb 28 14:33:32 2012	(r1845)
+++ trunk/GME/Mga/MgaProject.cpp	Wed Mar  7 11:29:24 2012	(r1846)
@@ -1347,8 +1347,10 @@
 {
 	COMTRY {
 		ASSERT(!in_nested);
-		if(!baseterr) COMTHROW(E_MGA_NOT_IN_TRANSACTION);
-		if(checkoff) COMTHROW(CheckSupress(VARIANT_FALSE));
+		if (!baseterr)
+			COMTHROW(E_MGA_NOT_IN_TRANSACTION);
+		if (checkoff)
+			COMTHROW(CheckSupress(VARIANT_FALSE));
 		while (!temporalobjs.empty()) {
 			temporalobjs.front()->objrecordchange();
 			temporalobjs.pop();
@@ -1525,11 +1527,14 @@
 	objstocheck.clear();		
 
 	HRESULT hr;
-	if(non_nestable) hr = must_abort ? E_MGA_MUST_ABORT : S_OK;
-	else hr = dataproject->BeginTransaction(TRANSTYPE_NESTED);
+	if (non_nestable)
+		hr = must_abort ? E_MGA_MUST_ABORT : S_OK;
+	else
+		hr = dataproject->BeginTransaction(TRANSTYPE_NESTED);
 
     MARKSIG('4');
-	if(hr == 0) in_nested = true;
+	if (hr == S_OK)
+		in_nested = true;
 	return hr;
 }
 
@@ -1540,9 +1545,11 @@
 	objstocheck.clear();
 
 	HRESULT hr = S_OK;
-	if(!non_nestable) hr = dataproject->CommitTransaction(TRANSTYPE_NESTED);
+	if (!non_nestable)
+		hr = dataproject->CommitTransaction(TRANSTYPE_NESTED);
     MARKSIG('6');
-	if(hr != S_OK) 	abortnested();
+	if (hr != S_OK)
+		abortnested();
 	else { 
 		in_nested = false;
 		while(!temporalobjs.empty()) {
@@ -1563,7 +1570,10 @@
 	}
     MARKSIG('5');
 	must_abort = true;
-	return dataproject->AbortTransaction(TRANSTYPE_NESTED);
+	if (non_nestable)
+		return S_OK;
+	else
+		return dataproject->AbortTransaction(TRANSTYPE_NESTED);
 }
 
 


More information about the gme-commit mailing list