[commit] r1870 - trunk/GME/Mga

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Thu Mar 22 15:22:03 CDT 2012


Author: ksmyth
Date: Thu Mar 22 15:22:03 2012
New Revision: 1870

Log:
Handle bad_alloc

Modified:
   trunk/GME/Mga/MgaTrukk.h

Modified: trunk/GME/Mga/MgaTrukk.h
==============================================================================
--- trunk/GME/Mga/MgaTrukk.h	Thu Mar 22 15:21:53 2012	(r1869)
+++ trunk/GME/Mga/MgaTrukk.h	Thu Mar 22 15:22:03 2012	(r1870)
@@ -310,6 +310,15 @@
 			SetStandardOrGMEErrorInfo(e.Error()); \
 		return e.Error(); \
 	} \
+	catch(std::bad_alloc&) \
+	{ \
+		{ \
+			if((hr = ttt.Abort()) != S_OK) return hr; \
+			CLEANUP; \
+		} \
+		MgaSetErrorInfo(E_OUTOFMEMORY); \
+		return E_OUTOFMEMORY; \
+	} \
 	return ttt.Commit(); }
 
 #define MGAPREF_NO_NESTED_TX 0x00000080
@@ -346,6 +355,16 @@
 		SetStandardOrGMEErrorInfo(e.Error()); \
 	return e.Error(); \
 } \
+catch(std::bad_alloc&) \
+{ \
+	{ \
+		HRESULT hr; \
+		if(!(this->mgaproject->preferences & MGAPREF_NO_NESTED_TX) && ((hr = ttt.Abort()) != S_OK)) return hr; \
+		CLEANUP; \
+	} \
+	MgaSetErrorInfo(E_OUTOFMEMORY); \
+	return E_OUTOFMEMORY; \
+} \
 if (!(this->mgaproject->preferences & MGAPREF_NO_NESTED_TX)) \
 	return ttt.Commit(); \
 else \
@@ -365,6 +384,15 @@
 		MgaSetErrorInfo(e.hr); \
 		return e.hr; \
 	} \
+	catch(std::bad_alloc&) \
+	{ \
+		struct { HRESULT hr; } e = { E_OUTOFMEMORY }; \
+		{ \
+			CLEANUP; \
+		} \
+		SetStandardOrGMEErrorInfo(e.hr); \
+		return e.hr; \
+	} \
 	return S_OK;
 
 


More information about the gme-commit mailing list