[DRAFT] GDExtension: Fix crash by copying GDExtensionScriptInstanceInfo2
on the Godot side
#81205
+53
−53
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes a crash that was introduced in PR #78634
Previously, Godot was keeping a pointer to the
GDExtensionScriptInstanceInfo
orGDExtensionScriptInstanceInfo2
created on the GDExtension side. The crash is caused because we provided compatibility by copying the data from provided aGDExtensionScriptInstanceInfo
into a newGDExtensionScriptInstanceInfo2
on the stack, which is, of course, temporary. We could certainly allocate a newGDExtensionScriptInstanceInfo2
on the heap, but then we need to keep track of whether it was created on the GDExtension side or the Godot side so we know if we should free it or not.This PR side steps that whole problem by instead making a copy of the struct on the Godot side, which we should probably do anyway, so that the GDExtension can't accidentally modify or free the struct on its side.
This is currently marked as a draft because I haven't had a chance to test it yet!