diff options
author | Jb Evain <jb@evain.net> | 2017-03-29 02:27:15 +0300 |
---|---|---|
committer | Jb Evain <jb@evain.net> | 2017-03-29 02:27:53 +0300 |
commit | bbe5501fa1a11f96196621fa8f51713b8e5698a7 (patch) | |
tree | b9f38d2093f4254cc5ed683a812641ef1295f932 /Mono.Cecil.PE | |
parent | 1530a21d652992e9adb749d207a4f4fd44ad8024 (diff) |
Fix reading/writing the size of table indexes in external pdbs
Diffstat (limited to 'Mono.Cecil.PE')
-rw-r--r-- | Mono.Cecil.PE/ImageReader.cs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/Mono.Cecil.PE/ImageReader.cs b/Mono.Cecil.PE/ImageReader.cs index 4ef25e1..f36d2e5 100644 --- a/Mono.Cecil.PE/ImageReader.cs +++ b/Mono.Cecil.PE/ImageReader.cs @@ -310,11 +310,11 @@ namespace Mono.Cecil.PE { for (int i = 0; i < streams; i++) ReadMetadataStream (section); - if (image.TableHeap != null) - ReadTableHeap (); - if (image.PdbHeap != null) ReadPdbHeap (); + + if (image.TableHeap != null) + ReadTableHeap (); } void ReadDebugHeader () @@ -426,6 +426,15 @@ namespace Mono.Cecil.PE { // Sorted 8 heap.Sorted = ReadInt64 (); + if (image.PdbHeap != null) { + for (int i = 0; i < Mixin.TableCount; i++) { + if (!image.PdbHeap.HasTable ((Table) i)) + continue; + + heap.Tables [i].Length = image.PdbHeap.TypeSystemTableRows [i]; + } + } + for (int i = 0; i < Mixin.TableCount; i++) { if (!heap.HasTable ((Table) i)) continue; |