[commit] r2227 - in trunk/GME: Gme Parser
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Tue Jun 4 10:14:32 CDT 2013
Author: ksmyth
Date: Tue Jun 4 10:14:32 2013
New Revision: 2227
Log:
Fix some crashrpts
Modified:
trunk/GME/Gme/GMEOLEData.cpp
trunk/GME/Gme/GMEView.cpp
trunk/GME/Parser/MgaParserSC.cpp
Modified: trunk/GME/Gme/GMEOLEData.cpp
==============================================================================
--- trunk/GME/Gme/GMEOLEData.cpp Tue Jun 4 10:14:09 2013 (r2226)
+++ trunk/GME/Gme/GMEOLEData.cpp Tue Jun 4 10:14:32 2013 (r2227)
@@ -199,6 +199,12 @@
COMTHROW( source->get_Project(&unknown) );
ASSERT( unknown != NULL );
+ if (unknown == NULL)
+ {
+ // Likely a race, crashrpt e27fb137-199a-4ff8-842e-301655495738
+ return false;
+ }
+
CComPtr<IMgaProject> source_project;
// KMS: fixing crashrpt 8895373f-396e-490f-b882-036ba9d42961: this QI may fail
HRESULT hr = unknown.QueryInterface(&source_project);
Modified: trunk/GME/Gme/GMEView.cpp
==============================================================================
--- trunk/GME/Gme/GMEView.cpp Tue Jun 4 10:14:09 2013 (r2226)
+++ trunk/GME/Gme/GMEView.cpp Tue Jun 4 10:14:32 2013 (r2227)
@@ -9615,7 +9615,9 @@
retVal != E_DECORATOR_NOT_IMPLEMENTED)
{
CancelDecoratorOperation();
- COMTHROW(retVal);
+ // FIXME: how to handle this error?
+ // COMTHROW(retVal);
+ return;
}
}
} else {
Modified: trunk/GME/Parser/MgaParserSC.cpp
==============================================================================
--- trunk/GME/Parser/MgaParserSC.cpp Tue Jun 4 10:14:09 2013 (r2226)
+++ trunk/GME/Parser/MgaParserSC.cpp Tue Jun 4 10:14:32 2013 (r2227)
@@ -1270,7 +1270,8 @@
GetCurrent().object = model;
long crid = toLong(GetByName(attributes,_T("childrelidcntr")));
GetCurrent().exnuminfo = crid;
- COMTHROW(CComQIPtr<IMgaModel>(model)->put_ChildRelIDCounter(crid));
+ // model may not be IMgaModel if "merging" (FIXME: likely a bug elsewhere) (crash e72e1106-8ab3-42af-b0e7-087fbef92b19)
+ COMTHROW(CComQIPtr<IMgaModel>(model) ? CComQIPtr<IMgaModel>(model)->put_ChildRelIDCounter(crid) : S_OK);
if( skip_inner_elements)
GetCurrent().exstrinfo = _T("skip");
More information about the gme-commit
mailing list