diff options
author | Jb Evain <jbevain@gmail.com> | 2013-04-18 16:08:09 +0400 |
---|---|---|
committer | Jb Evain <jbevain@gmail.com> | 2013-04-18 16:08:09 +0400 |
commit | 9bd6d39da40eaf2da2f5d29c817af3fd669b52ac (patch) | |
tree | 6df071c8a0917fa15093cd9715a4625067bafd7f /symbols | |
parent | cd45fe4961d08580dcaacabdda406b213b07da3a (diff) |
Workaround a bug in a old Mono C# compiler for debug symbols in iterators
Diffstat (limited to 'symbols')
-rw-r--r-- | symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs b/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs index 759f38a..2440a66 100644 --- a/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs +++ b/symbols/mdb/Mono.Cecil.Mdb/MdbReader.cs @@ -82,7 +82,11 @@ namespace Mono.Cecil.Mdb { static void ReadLocalVariables (MethodEntry entry, MethodBody body, Scope [] scopes) { var locals = entry.GetLocals (); + foreach (var local in locals) { + if (local.Index < 0 || local.Index >= body.Variables.Count) // Mono 2.6 emits wrong local infos for iterators + continue; + var variable = body.Variables [local.Index]; variable.Name = local.Name; @@ -202,6 +206,9 @@ namespace Mono.Cecil.Mdb { static void ReadLocalVariables (MethodEntry entry, MethodSymbols symbols) { foreach (var local in entry.GetLocals ()) { + if (local.Index < 0 || local.Index >= symbols.Variables.Count) // Mono 2.6 emits wrong local infos for iterators + continue; + var variable = symbols.Variables [local.Index]; variable.Name = local.Name; } |