PyGILState_Release correction #320
Merged
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.
It's a fix for a problem I found doing threading controlled outside p4d. With optimizations enabled, delphi treats PyGILState_STATE enum as 1-byte by default, but vc++ compiled python.dll has it as a 4-byte enum. Calls to PyGILState_Release with a 1-byte argument (decompiled to something like mov al, 0; call PyGILState_Release;) leads to unexpected behaviour because most significant bytes could have "random" values, depending on what happens to the AX register before calling.
For this fix, I have only internal tests for my system, but I think it can be important for someone else