Skip longjmp()
SEH unwind in 64-bit build
#49
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.
On 64-bit Windows, MinGW passes a frame pointer to
_setjmp
solongjmp
can do a SEH unwind. This seems to work when the caller is also built with MinGW, but sometimes crashes withSTATUS_BAD_STACK
when the caller is built with MSVC; it appears that this is a longstanding MinGW issue. In 64-bit builds, overridesetjmp()
to pass aNULL
frame pointer to skipthe SEH unwind. Our uses of
setjmp
/longjmp
are all in libpng/libjpeg error handling, which isn't expecting to do any cleanup in intermediate stack frames, so this should be fine.Fixes #47.