Skip to content

Fix Issues With Collections#1555

Open
rthomasv3 wants to merge 7 commits intopraydog:masterfrom
rthomasv3:master
Open

Fix Issues With Collections#1555
rthomasv3 wants to merge 7 commits intopraydog:masterfrom
rthomasv3:master

Conversation

@rthomasv3
Copy link
Contributor

My collections changes didn't work after being merged in with the latest master. I believe I found the root cause and fixed everything.

Properties that were collection types were always returning null because generic instantiations don't have runtime types and were incorrectly flagged as by-ref (shared/sdk/RETypeDefinition.cpp).

Calling instance methods on ValueTypes (e.g. struct enumerator MoveNext) was broken because the fake boxed object prepended a 0x10 header that the native invoke wrapper doesn't expect, it passes the pointer directly as this, so the method was reading the header bytes as struct fields (csharp-api/REFrameworkNET/Method.cpp). The fix preserves the GC safety of copying to a native buffer but removes the incorrect header.

I believe the changes in Method.cpp preserve the original fixes and shouldn't reintroduce any issues. However, the change in RETypeDefinition.cpp I'm less certain of and worried it could reintroduce a problem in MH Wilds, but I don't have that game to test it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant