Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJb Evain <jbevain@gmail.com>2013-04-18 16:08:09 +0400
committerJb Evain <jbevain@gmail.com>2013-04-18 16:08:09 +0400
commit9bd6d39da40eaf2da2f5d29c817af3fd669b52ac (patch)
tree6df071c8a0917fa15093cd9715a4625067bafd7f /symbols
parentcd45fe4961d08580dcaacabdda406b213b07da3a (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.cs7
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;
}