ioncodes / dnpatch

.NET Patcher library using dnlib
MIT License
313 stars 49 forks source link

[Wrong code in release] PatchHelper / GetInstructions #57

Open themaoci opened 3 years ago

themaoci commented 3 years ago

Hello i found a bug in PatchHelper.GetInstructions

its suposed to return Instruction[] and anyway no matter how hard i tried it was always returnign me an exception that i cannot cast IList to Instruction[]

so my quick workaround was to edit it from this code below

public Instruction[] GetInstructions(Target target)
{
    TypeDef type = this.FindType(target.Namespace + "." + target.Class, target.NestedClasses);
    MethodDef methodDef = this.FindMethod(type, target.Method, target.Parameters, target.ReturnType);
    return (Instruction[])methodDef.Body.Instructions;
}

into this one

public Instruction[] GetInstructions(Target target)
{
    TypeDef type = this.FindType(target.Namespace + "." + target.Class, target.NestedClasses);
    IEnumerator<Instruction> enumerator = this.FindMethod(type, target.Method, target.Parameters, target.ReturnType).Body.Instructions.GetEnumerator();
    List<Instruction> list = new List<Instruction>();
    while (enumerator.MoveNext())
    {
        Instruction item = enumerator.Current;
        list.Add(item);
    }
    return list.ToArray();
}

if someone of you have some time please apply it to new release THANKS :) it will deffenetly help others Hope you guys are doing well!!!

themaoci commented 3 years ago

PS. i was checking dnpatch.zip and dnlib.zip release files as i remember