diff options
author | Fadi Hanna <fadim@microsoft.com> | 2016-05-31 12:58:02 -0700 |
---|---|---|
committer | Fadi Hanna <fadim@microsoft.com> | 2016-05-31 12:58:02 -0700 |
commit | b79ea9b0bb8a864b3824dcb82a5c0a7e39c88583 (patch) | |
tree | 8b644bf5745380f8bf60c019fd6a3ef58b4edc59 /src/vm/readytoruninfo.cpp | |
parent | d8eef57192117de033dd8bc89348943f28af520b (diff) | |
download | coreclr-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.cpp | 10 |
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; } |