avoid GC untrack if we haven't yet GC tracked
diff --git a/src/crypto/pkcs12.c b/src/crypto/pkcs12.c
index 2f6f944..2302242 100644
--- a/src/crypto/pkcs12.c
+++ b/src/crypto/pkcs12.c
@@ -20,6 +20,7 @@
*/
static void crypto_PKCS12_dealloc(crypto_PKCS12Obj *self);
+static int crypto_PKCS12_clear(crypto_PKCS12Obj *self);
static char crypto_PKCS12_get_certificate_doc[] = "\n\
Return certificate portion of the PKCS12 structure\n\
@@ -414,7 +415,10 @@
error:
sk_X509_free(cacerts); /* NULL safe. Free just the container. */
- crypto_PKCS12_dealloc(self);
+ if (self) {
+ crypto_PKCS12_clear(self);
+ PyObject_GC_Del(self);
+ }
return NULL;
}