Browse Source

fix possible problem with dynamic assemblies in ClassBrowser

pull/80/head
Siegfried Pammer 12 years ago
parent
commit
a99ad62891
  1. 5
      src/AddIns/Debugger/Debugger.Core/Module.cs
  2. 9
      src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs

5
src/AddIns/Debugger/Debugger.Core/Module.cs

@ -71,7 +71,10 @@ namespace Debugger @@ -71,7 +71,10 @@ namespace Debugger
if (symReader != null)
return symReader.GetUserEntryPoint();
var info = TypeSystemExtensions.GetInfo(Assembly);
var ep = info.CecilModule.EntryPoint;
var cecilModule = info.CecilModule;
if (cecilModule == null)
return 0;
var ep = cecilModule.EntryPoint;
if (ep != null)
return ep.MetadataToken.ToUInt32();
return 0;

9
src/AddIns/Debugger/Debugger.Core/TypeSystemExtensions.cs

@ -138,8 +138,11 @@ namespace Debugger @@ -138,8 +138,11 @@ namespace Debugger
internal static Task<IUnresolvedAssembly> LoadModuleAsync(Module module, ICorDebugModule corModule)
{
string name = corModule.GetName();
if (corModule.IsDynamic() == 1 || corModule.IsInMemory() == 1)
return Task.FromResult<IUnresolvedAssembly>(new DefaultUnresolvedAssembly(name));
if (corModule.IsDynamic() == 1 || corModule.IsInMemory() == 1) {
var defaultUnresolvedAssembly = new DefaultUnresolvedAssembly(name);
weakTable.Add(defaultUnresolvedAssembly, new ModuleMetadataInfo(module, null));
return Task.FromResult<IUnresolvedAssembly>(defaultUnresolvedAssembly);
}
//return Task.FromResult(LoadModule(module, name));
return Task.Run(() => LoadModule(module, name));
@ -181,6 +184,8 @@ namespace Debugger @@ -181,6 +184,8 @@ namespace Debugger
ModuleMetadataInfo info;
if (!weakTable.TryGetValue(module.UnresolvedAssembly, out info))
throw new ArgumentException("The assembly was not from the debugger type system");
if (info.CecilModule == null)
return EmptyList<string>.Instance;
return info.CecilModule.AssemblyReferences.Select(r => r.FullName);
}

Loading…
Cancel
Save