Comments (4)
After many attempts to fix the issue I found what was needed to fix the issue by looking at compiler generated methods.
basically there were 2 issues that were causing the same error.
First issue, when replacing the code of a method that has the return type void
, there must be a nop
ret
at the end, like you're returning nop
.
Second issue, you must add exactly enough of the pop
opcode to empty the stack before the ret
(except for the value being returned of course)
So this was not a bug with harmony, just that the error messages appeared to be complaining about something being there when in fact they were complaining that it wasn't there
from harmony.
Yes. You need to handle the stack very correctly. There is a static checker in CIL that complains otherwise. You can also only have a RET without a previous NOP.
from harmony.
for me, I needed to have the nop
. if I didn't, it had the error
from harmony.
That makes no sense. According to the documentation a NOP is a filler used for debugging. It has no effect. Maybe you have weird jumps and the CIL static preflight check does not like that (documented behaviour). Or your runtime is seriously weird.
from harmony.
Related Issues (20)
- Failed to patch DateTime.Now with .net 7.0 HOT 2
- AccessTools.Constructor behaving unexpectedly HOT 2
- Reverse patch for private class? HOT 2
- Is it possible to patch ALL the methods/properties/... in the given assembly/scope for the sake of ad-hoc execution logging? HOT 2
- Is it possible to apply all, but specified, patches? Alternative solution to [HarmonyPatchCategory] for Harmony < v2.3? HOT 1
- InvalidProgramException in Stride/Godot HOT 4
- Is it possible to insert a delegate into IL code? HOT 1
- Add strongname to make all projects can use this library HOT 2
- Correct way to patch TWindow GetWindow<TWindow>() HOT 1
- Release a new prerelease for the updated Mono.Cecil
- Error in exported Godot Engine build when attempting to patch method HOT 5
- Incorrect code generation for exception block when patching `System.Net.WebClient::DownloadFile(System.Uri address, System.String fileName)` HOT 2
- Problem patching specific method with latest pre-release HOT 2
- Harmony CANNOT be used in Godot!!!! HOT 2
- Any restriction to hook .Net service? HOT 9
- Getting an instance from the TargetMethod patch HOT 1
- Using GeneratedRegex causes failed compile due to ReadOnlySpan HOT 2
- A crash after hook:The object's current state invalidates the operation HOT 2
- Harmony fails to patch method and throws exception in exported Godot build HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from harmony.