Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Avoid raising a SystemError when clearing slots if setstate() failed.
PR #52 introduced a code path to `ghostify` that calls PyErr_Clear() with the intent to avoid propagating AttributeErrors for slots. However, if there is an error (like a POSKeyError) raised by jar.setstate(), then `unghostify` will call ghostify with an error pending. If the object had slots that weren't set and the AttributeError was cleared, so was the pending error from setstate. So when `ghostify` returned NULL that got propagated up to the interpreter which finds no exception and so raises `SystemError: error return without exception set`. This commit makes `unghostify` save and restore the exception state around the call to PyErr_Clear.
- Loading branch information
Showing
3 changed files
with
44 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters