summaryrefslogtreecommitdiff
path: root/src/vm/readytoruninfo.cpp
diff options
context:
space:
mode:
authorFadi Hanna <fadim@microsoft.com>2016-05-31 12:58:02 -0700
committerFadi Hanna <fadim@microsoft.com>2016-05-31 12:58:02 -0700
commitb79ea9b0bb8a864b3824dcb82a5c0a7e39c88583 (patch)
tree8b644bf5745380f8bf60c019fd6a3ef58b4edc59 /src/vm/readytoruninfo.cpp
parentd8eef57192117de033dd8bc89348943f28af520b (diff)
downloadcoreclr-b79ea9b0bb8a864b3824dcb82a5c0a7e39c88583.tar.gz
coreclr-b79ea9b0bb8a864b3824dcb82a5c0a7e39c88583.tar.bz2
coreclr-b79ea9b0bb8a864b3824dcb82a5c0a7e39c88583.zip
Fix for issue 5241: [RTM] Interop\ICastable\Castable\Castable.cmd CONTRACT VIOLATION by ReadyToRunInfo::TryLookupTypeTokenFromName (#5296)
Diffstat (limited to 'src/vm/readytoruninfo.cpp')
-rw-r--r--src/vm/readytoruninfo.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/vm/readytoruninfo.cpp b/src/vm/readytoruninfo.cpp
index 3636a8ed7a..6e78baecc7 100644
--- a/src/vm/readytoruninfo.cpp
+++ b/src/vm/readytoruninfo.cpp
@@ -85,7 +85,7 @@ BOOL ReadyToRunInfo::TryLookupTypeTokenFromName(NameHandle *pName, mdToken * pFo
CONTRACTL
{
GC_NOTRIGGER;
- THROWS;
+ NOTHROW;
SO_INTOLERANT;
SUPPORTS_DAC;
PRECONDITION(!m_availableTypesHashtable.IsNull());
@@ -147,15 +147,19 @@ BOOL ReadyToRunInfo::TryLookupTypeTokenFromName(NameHandle *pName, mdToken * pFo
// Token must be a typedef token that we previously resolved (we shouldn't get here with an exported type token)
_ASSERT(TypeFromToken(tokenBasedEncloser.m_TypeToken) == mdtTypeDef);
+ int dwCurrentHashCode;
mdToken mdCurrentTypeToken = tokenBasedEncloser.m_TypeToken;
- dwHashCode ^= GetVersionResilientTypeHashCode(tokenBasedEncloser.m_pModule->GetMDImport(), mdCurrentTypeToken);
+ if (!GetVersionResilientTypeHashCode(tokenBasedEncloser.m_pModule->GetMDImport(), mdCurrentTypeToken, &dwCurrentHashCode))
+ return FALSE;
+ dwHashCode ^= dwCurrentHashCode;
}
}
else
{
// Token based lookups (ex: tokens from IL code)
- dwHashCode = GetVersionResilientTypeHashCode(pName->GetTypeModule()->GetMDImport(), pName->GetTypeToken());
+ if (!GetVersionResilientTypeHashCode(pName->GetTypeModule()->GetMDImport(), pName->GetTypeToken(), &dwHashCode))
+ return FALSE;
}