Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Commit

Permalink
Lookup System.Runtime and mscorlib references by Assembly name
Browse files Browse the repository at this point in the history
Rather than by alias.

Fixes #10595
  • Loading branch information
Michael Letterle authored and RussKeldorph committed Apr 26, 2017
1 parent 077cf9c commit bf579f8
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
11 changes: 11 additions & 0 deletions src/ilasm/asmman.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,17 @@ mdToken AsmMan::GetAsmRefTokByName(__in __nullterminated const char*
AsmManAssembly* tmp = GetAsmRefByName(szAsmRefName);
return(tmp ? tmp->tkTok : mdAssemblyRefNil);
}
AsmManAssembly* AsmMan::GetAsmRefByAsmName(__in __nullterminated const char* szAsmName)
{
AsmManAssembly* ret = NULL;
if(szAsmName)
{
for(int i=0; (ret = m_AsmRefLst.PEEK(i))&&
(strcmp(ret->szName,szAsmName)); i++);
}
return ret;
}

//==============================================================================================================
void AsmMan::SetModuleName(__inout_opt __nullterminated char* szName)
{
Expand Down
2 changes: 2 additions & 0 deletions src/ilasm/asmman.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ class AsmMan
void SetManifestResFile(__in __nullterminated char* szFileName, ULONG ulOffset);
void SetManifestResAsmRef(__in __nullterminated char* szAsmRefName);

AsmManAssembly* GetAsmRefByAsmName(__in __nullterminated const char* szAsmName);

mdToken GetFileTokByName(__in __nullterminated char* szFileName);
mdToken GetAsmRefTokByName(__in __nullterminated const char* szAsmRefName);
mdToken GetAsmTokByName(__in __nullterminated const char* szAsmName)
Expand Down
16 changes: 12 additions & 4 deletions src/ilasm/assembler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,14 +276,22 @@ mdToken Assembler::GetAsmRef(__in __nullterminated const char* szName)

mdToken Assembler::GetBaseAsmRef()
{
if (RidFromToken(m_pManifest->GetAsmRefTokByName("System.Runtime")) != 0)
AsmManAssembly* sysRuntime = m_pManifest->GetAsmRefByAsmName("System.Runtime");
if(sysRuntime != NULL)
{
return GetAsmRef("System.Runtime");
return GetAsmRef(sysRuntime->szAlias ? sysRuntime->szAlias : sysRuntime->szName);
}

if (RidFromToken(m_pManifest->GetAsmRefTokByName("netstandard")) != 0)
AsmManAssembly* mscorlibAsm = m_pManifest->GetAsmRefByAsmName("mscorlib");
if(mscorlibAsm != NULL)
{
return GetAsmRef("netstandard");
return GetAsmRef(mscorlibAsm->szAlias ? mscorlibAsm->szAlias : mscorlibAsm->szName);
}

AsmManAssembly* netstandardAsm = m_pManifest->GetAsmRefByAsmName("netstandard");
if (netstandardAsm != NULL)
{
return GetAsmRef(netstandardAsm->szAlias ? netstandardAsm->szAlias : netstandardAsm->szName);
}

return GetAsmRef("mscorlib");
Expand Down

0 comments on commit bf579f8

Please sign in to comment.