[commit] r2406 - in trunk: Doc GME/Gme GME/Mga

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Wed Dec 18 17:29:46 CST 2013


Author: ksmyth
Date: Wed Dec 18 17:29:46 2013
New Revision: 2406

Log:
Fix opening mga file when its paradigm mta no longer exists

Modified:
   trunk/Doc/README_in.txt
   trunk/GME/Gme/GMEApp.cpp
   trunk/GME/Mga/MgaProject.cpp

Modified: trunk/Doc/README_in.txt
==============================================================================
--- trunk/Doc/README_in.txt	Wed Dec 18 17:29:33 2013	(r2405)
+++ trunk/Doc/README_in.txt	Wed Dec 18 17:29:46 2013	(r2406)
@@ -26,6 +26,10 @@
 1. Release Notes
 ************************************************
 
+Release Notes
+----------------------------------
+  - Fix opening mga file when its paradigm mta no longer exists
+
 Release Notes of Release 13.11.14
 ----------------------------------
   - Binary compatibility with 11.12.2

Modified: trunk/GME/Gme/GMEApp.cpp
==============================================================================
--- trunk/GME/Gme/GMEApp.cpp	Wed Dec 18 17:29:33 2013	(r2405)
+++ trunk/GME/Gme/GMEApp.cpp	Wed Dec 18 17:29:46 2013	(r2406)
@@ -1402,6 +1402,8 @@
 		COMTHROW( mgaProject->EnableAutoAddOns(VARIANT_TRUE));
 		HRESULT hr = mgaProject->Open(PutInBstr(conn), &readable_only);
 		if(hr != S_OK) {
+			_bstr_t mgaProjectOpenError;
+			GetErrorInfo(mgaProjectOpenError.GetAddress());
 			CComBSTR parn;
 			CComBSTR parv;
 			long version;
@@ -1447,8 +1449,10 @@
 				}
 				if(hr == E_MGA_PARADIGM_INVALID) {
 					msg = _T("WARNING: Project could not access its original version of\n")
-						_T("paradigm '") + CString(parn) + _T("'\n")
-						_T("Do you want to try with the current version of the paradigm?");
+						_T("paradigm '") + CString(parn) + _T("'\n");
+					if (mgaProjectOpenError.length())
+						msg += static_cast<const wchar_t*>(mgaProjectOpenError);
+					msg += _T("Do you want to try with the current version of the paradigm?");
 					if (AfxMessageBox(msg ,MB_OKCANCEL) == IDOK) {
 						guidpar = true;
 						tryit = true;

Modified: trunk/GME/Mga/MgaProject.cpp
==============================================================================
--- trunk/GME/Mga/MgaProject.cpp	Wed Dec 18 17:29:33 2013	(r2405)
+++ trunk/GME/Mga/MgaProject.cpp	Wed Dec 18 17:29:46 2013	(r2406)
@@ -155,10 +155,18 @@
 	}
 	ASSERT(connstr);
 	COMTHROW(metapr.CoCreateInstance(OLESTR("Mga.MgaMetaProject")));
-	metapr->__Open(connstr);
+	HRESULT hr = metapr->Open(connstr);
+	if (FAILED(hr))
+	{
+		_bstr_t err;
+		if (GetErrorInfo(err.GetAddress()))
+			throw_com_error(E_MGA_PARADIGM_INVALID, static_cast<const wchar_t*>(err)); // change HRESULT
+		COMTHROW(E_MGA_PARADIGM_INVALID);
+	}
 	CComVariant metaGUID;
 	COMTHROW(metapr->get_GUID(&metaGUID));
-	if(guidcmp(metaGUID, *pGUID)) COMTHROW(E_MGA_PARADIGM_INVALID);
+	if (guidcmp(metaGUID, *pGUID)) 
+		throw_com_error(E_MGA_PARADIGM_INVALID, L".mta file paradigm GUID does not match registered GUID");
 	parconn = connstr.GetBSTR();
 }
 


More information about the gme-commit mailing list