Skip to content

Cannot unpatch extern method patchΒ #92

@alexhaffner

Description

@alexhaffner

Hey! I'm using HarmonyX with unity (in editor directly), trying to patch & unpatch in play mode.
After I call Harmony.UnpatchAll(); the methods still seems to be patched.

public class DestroyPatch
{
    [HarmonyPostfix]
    [HarmonyPatch(nameof(Object.Destroy), new Type[] { typeof(Object), typeof(float) })]
    public static void PrefixA(Object obj, float t)
    {
        Debug.Log("Destroy(Object obj, float t) called");
    }
    
    [HarmonyPostfix]
    [HarmonyPatch(nameof(Object.DestroyImmediate), new Type[] { typeof(Object), typeof(bool) })]
    public static void PrefixB(Object obj, bool allowDestroyingAssets)
    {
        Debug.Log("DestroyImmediate(Object obj, bool allowDestroyingAssets) called");
    }
}

Both are extern calls. I don't have issues with "normal" methods.

Looking into UnpatchConditional, it seems that HasMethodBody returns 0, and thus those methods are skipped and never unpatched.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions