diff options
author | Marek Safar <marek.safar@gmail.com> | 2017-04-04 12:48:01 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2017-04-04 12:48:01 +0300 |
commit | 9e3c67108213fe0ed77d9b03052a51b8569f9016 (patch) | |
tree | 4628b4d60df214f871b60da324766b9413ef5bd7 | |
parent | 1922b99c7a041c364c58ddff9121271e57862b76 (diff) |
Revert "Clear out symbols that we can't process"
This reverts commit cd85c4bfcb8e4c9addeab5a1912b46f9585154b5.
-rw-r--r-- | Mono.Cecil/ModuleDefinition.cs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/Mono.Cecil/ModuleDefinition.cs b/Mono.Cecil/ModuleDefinition.cs index 8a233ba..9f20b9f 100644 --- a/Mono.Cecil/ModuleDefinition.cs +++ b/Mono.Cecil/ModuleDefinition.cs @@ -1003,9 +1003,24 @@ namespace Mono.Cecil { get { return Image != null && !Image.Debug.IsZero; } } - public ImageDebugDirectory GetDebugHeader () + public ImageDebugDirectory GetDebugHeader (out byte [] header) { - return Image.DebugHeader ?? new ImageDebugHeader (); + if (!HasDebugHeader) + throw new InvalidOperationException (); + + return Image.GetDebugHeader (out header); + } + + void ProcessDebugHeader () + { + if (!HasDebugHeader) + return; + + byte [] header; + var directory = GetDebugHeader (out header); + + if (!symbol_reader.ProcessDebugHeader (directory, header)) + throw new InvalidOperationException (); } #if !READ_ONLY @@ -1085,10 +1100,7 @@ namespace Mono.Cecil { symbol_reader = reader; - if (!symbol_reader.ProcessDebugHeader (GetDebugHeader ())) { - symbol_reader = null; - throw new InvalidOperationException (); - } + ProcessDebugHeader (); if (HasImage && ReadingMode == ReadingMode.Immediate) { var immediate_reader = new ImmediateModuleReader (Image); |