Browse Source

fixed bug in VisitStLoc: do not copy null literal pseudo type

pull/728/head
Siegfried Pammer 9 years ago
parent
commit
925180d55f
  1. 4
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

4
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -281,7 +281,9 @@ namespace ICSharpCode.Decompiler.CSharp @@ -281,7 +281,9 @@ namespace ICSharpCode.Decompiler.CSharp
protected internal override TranslatedExpression VisitStLoc(StLoc inst)
{
var translatedValue = Translate(inst.Value);
if (inst.Variable.Kind == VariableKind.StackSlot && inst.Variable.IsSingleDefinition && !loadedVariablesSet.Contains(inst.Variable)) {
if (inst.Variable.Kind == VariableKind.StackSlot && inst.Variable.IsSingleDefinition
&& inst.Variable.StackType == translatedValue.Type.GetStackType()
&& translatedValue.Type.Kind != TypeKind.Null && !loadedVariablesSet.Contains(inst.Variable)) {
inst.Variable.Type = translatedValue.Type;
}
return Assignment(ConvertVariable(inst.Variable).WithoutILInstruction(), translatedValue).WithILInstruction(inst);

Loading…
Cancel
Save