[commit] r1791 - trunk/GME/Mga
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Mon Jan 9 17:37:34 CST 2012
Author: ksmyth
Date: Mon Jan 9 17:37:33 2012
New Revision: 1791
Log:
Fail fast when bad role (wrong parent) is given. Was caught in check().
Modified:
trunk/GME/Mga/MgaComplexOps.cpp
Modified: trunk/GME/Mga/MgaComplexOps.cpp
==============================================================================
--- trunk/GME/Mga/MgaComplexOps.cpp Mon Jan 9 11:16:28 2012 (r1790)
+++ trunk/GME/Mga/MgaComplexOps.cpp Mon Jan 9 17:37:33 2012 (r1791)
@@ -1067,9 +1067,9 @@
ASSERT(targettype == DTID_MODEL);
CComPtr<IMgaMetaRole> r;
if(rlist) COMTHROW(rlist->get_Item(i+1, &r));
+ CComPtr<IMgaMetaFCO> mf;
+ COMTHROW(get_Meta(&mf));
if(!r) { // NO metarole given, inherit that of original object
- CComPtr<IMgaMetaFCO> mf;
- COMTHROW(get_Meta(&mf));
CComQIPtr<IMgaMetaModel> parentmeta = mf;
if(!parentmeta) COMTHROW(E_MGA_META_INCOMPATIBILITY);
metaref_type t;
@@ -1081,14 +1081,18 @@
COMTHROW(metar->get_Name(&rolename));
COMTHROW(parentmeta->get_RoleByName(rolename, &r));
if(!r) COMTHROW(E_MGA_NO_ROLE);
-
}
{
metaref_type kt;
CComPtr<IMgaMetaFCO> mfco;
COMTHROW(r->get_Kind(&mfco));
COMTHROW(mfco->get_MetaRef(&kt));
- if(kt != (nobjs[i])[ATTRID_META]) COMTHROW(E_MGA_NO_ROLE);
+ if(kt != (nobjs[i])[ATTRID_META])
+ COMTHROW(E_MGA_NO_ROLE);
+ CComPtr<IMgaMetaModel> mmodel;
+ COMTHROW(r->get_ParentModel(&mmodel));
+ if (!mf.IsEqualObject(mmodel))
+ COMTHROW(E_MGA_INVALID_ROLE);
}
COMTHROW(r->get_MetaRef(&trole));
More information about the gme-commit
mailing list