[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