bpo-33622: Fix issues with handling errors in the GC. (GH-7078)


* Fixed a leak when the GC fails to add an object with __del__ into
  the gc.garbage list.
* PyGC_Collect() can now be called when an exception is set and
  preserves it.
* Fixed an undefined behavior with comparing a dead pointer with NULL.
(cherry picked from commit 301e3cc8a5bc68c5347ab6ac6f83428000d31ab2)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2 files changed