Browse Source

Fix #1841: Not properly reusing names from PDB

pull/1843/head
Siegfried Pammer 6 years ago
parent
commit
a653b8b566
  1. 8
      ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs

8
ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs

@ -140,7 +140,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms
// remove unused variables before assigning names // remove unused variables before assigning names
function.Variables.RemoveDead(); function.Variables.RemoveDead();
int numDisplayClassLocals = 0; int numDisplayClassLocals = 0;
foreach (var v in function.Variables) { foreach (var v in function.Variables.OrderBy(v => v.Name)) {
switch (v.Kind) { switch (v.Kind) {
case VariableKind.Parameter: // ignore case VariableKind.Parameter: // ignore
break; break;
@ -243,8 +243,12 @@ namespace ICSharpCode.Decompiler.IL.Transforms
reservedVariableNames.Add(nameWithoutDigits, number - 1); reservedVariableNames.Add(nameWithoutDigits, number - 1);
} }
int count = ++reservedVariableNames[nameWithoutDigits]; int count = ++reservedVariableNames[nameWithoutDigits];
string nameWithDigits = nameWithoutDigits + count.ToString();
if (oldVariableName == nameWithDigits) {
return oldVariableName;
}
if (count != 1) { if (count != 1) {
return nameWithoutDigits + count.ToString(); return nameWithDigits;
} else { } else {
return nameWithoutDigits; return nameWithoutDigits;
} }

Loading…
Cancel
Save