[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