PyModule_AddObject steals a reference. Fix all of the double calls to it by adding a Py_INCREF. Also, some other assorted hacks which probably shouldn't be necessary but are at the moment.
diff --git a/src/ssl/ssl.c b/src/ssl/ssl.c
index 94d4844..1f12d67 100644
--- a/src/ssl/ssl.c
+++ b/src/ssl/ssl.c
@@ -92,8 +92,12 @@
} while (0)
ssl_Error = PyErr_NewException("OpenSSL.SSL.Error", NULL, NULL);
- if (ssl_Error == NULL)
+ if (ssl_Error == NULL) {
goto error;
+ }
+ /* XXX PyPy hack */
+ Py_INCREF(ssl_Error);
+
if (PyModule_AddObject(module, "Error", ssl_Error) != 0)
goto error;