@@ -282,8 +282,6 @@ typedef struct {
282282 PyMutex mutex ; /* OpenSSL context lock */
283283} EVPobject ;
284284
285- #define EVPobject_CAST (op ) ((EVPobject *)(op))
286-
287285typedef struct {
288286 PyObject_HEAD
289287 HMAC_CTX * ctx ; /* OpenSSL hmac context */
@@ -292,8 +290,6 @@ typedef struct {
292290 PyMutex mutex ; /* HMAC context lock */
293291} HMACobject ;
294292
295- #define HMACobject_CAST (op ) ((HMACobject *)(op))
296-
297293#include "clinic/_hashopenssl.c.h"
298294/*[clinic input]
299295module _hashlib
@@ -501,9 +497,7 @@ py_digest_by_digestmod(PyObject *module, PyObject *digestmod, enum Py_hash_type
501497static EVPobject *
502498newEVPobject (PyTypeObject * type )
503499{
504- assert (type != NULL );
505- assert (type -> tp_alloc != NULL );
506- EVPobject * retval = (EVPobject * )type -> tp_alloc (type , 0 );
500+ EVPobject * retval = (EVPobject * )PyObject_New (EVPobject , type );
507501 if (retval == NULL ) {
508502 return NULL ;
509503 }
@@ -542,23 +536,14 @@ EVP_hash(EVPobject *self, const void *vp, Py_ssize_t len)
542536/* Internal methods for a hash object */
543537
544538static void
545- EVP_dealloc (PyObject * op )
539+ EVP_dealloc (EVPobject * self )
546540{
547- PyTypeObject * tp = Py_TYPE (op );
548- PyObject_GC_UnTrack (op );
549- EVPobject * self = EVPobject_CAST (op );
541+ PyTypeObject * tp = Py_TYPE (self );
550542 EVP_MD_CTX_free (self -> ctx );
551- tp -> tp_free (self );
543+ PyObject_Free (self );
552544 Py_DECREF (tp );
553545}
554546
555- static int
556- EVP_traverse (PyObject * op , visitproc visit , void * arg )
557- {
558- Py_VISIT (Py_TYPE (op ));
559- return 0 ;
560- }
561-
562547static int
563548locked_EVP_MD_CTX_copy (EVP_MD_CTX * new_ctx_p , EVPobject * self )
564549{
@@ -796,7 +781,6 @@ PyDoc_STRVAR(hashtype_doc,
796781
797782static PyType_Slot EVPtype_slots [] = {
798783 {Py_tp_dealloc , EVP_dealloc },
799- {Py_tp_traverse , EVP_traverse },
800784 {Py_tp_repr , EVP_repr },
801785 {Py_tp_doc , (char * )hashtype_doc },
802786 {Py_tp_methods , EVP_methods },
@@ -805,16 +789,11 @@ static PyType_Slot EVPtype_slots[] = {
805789};
806790
807791static PyType_Spec EVPtype_spec = {
808- .name = "_hashlib.HASH" ,
809- .basicsize = sizeof (EVPobject ),
810- .flags = (
811- Py_TPFLAGS_DEFAULT
812- | Py_TPFLAGS_BASETYPE
813- | Py_TPFLAGS_DISALLOW_INSTANTIATION
814- | Py_TPFLAGS_IMMUTABLETYPE
815- | Py_TPFLAGS_HAVE_GC
816- ),
817- .slots = EVPtype_slots
792+ "_hashlib.HASH" , /*tp_name*/
793+ sizeof (EVPobject ), /*tp_basicsize*/
794+ 0 , /*tp_itemsize*/
795+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE ,
796+ EVPtype_slots
818797};
819798
820799#ifdef PY_OPENSSL_HAS_SHAKE
@@ -955,25 +934,18 @@ PyDoc_STRVAR(hashxoftype_doc,
955934"digest_size -- number of bytes in this hashes output" );
956935
957936static PyType_Slot EVPXOFtype_slots [] = {
958- {Py_tp_dealloc , EVP_dealloc },
959- {Py_tp_traverse , EVP_traverse },
960937 {Py_tp_doc , (char * )hashxoftype_doc },
961938 {Py_tp_methods , EVPXOF_methods },
962939 {Py_tp_getset , EVPXOF_getseters },
963940 {0 , 0 },
964941};
965942
966943static PyType_Spec EVPXOFtype_spec = {
967- .name = "_hashlib.HASHXOF" ,
968- .basicsize = sizeof (EVPobject ),
969- .flags = (
970- Py_TPFLAGS_DEFAULT
971- | Py_TPFLAGS_BASETYPE
972- | Py_TPFLAGS_DISALLOW_INSTANTIATION
973- | Py_TPFLAGS_IMMUTABLETYPE
974- | Py_TPFLAGS_HAVE_GC
975- ),
976- .slots = EVPXOFtype_slots
944+ "_hashlib.HASHXOF" , /*tp_name*/
945+ sizeof (EVPobject ), /*tp_basicsize*/
946+ 0 , /*tp_itemsize*/
947+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE ,
948+ EVPXOFtype_slots
977949};
978950
979951
@@ -1687,8 +1659,7 @@ _hashlib_hmac_new_impl(PyObject *module, Py_buffer *key, PyObject *msg_obj,
16871659 }
16881660
16891661 _hashlibstate * state = get_hashlib_state (module );
1690- assert (state -> HMACtype != NULL );
1691- self = (HMACobject * )state -> HMACtype -> tp_alloc (state -> HMACtype , 0 );
1662+ self = PyObject_New (HMACobject , state -> HMACtype );
16921663 if (self == NULL ) {
16931664 goto error ;
16941665 }
@@ -1793,8 +1764,7 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
17931764 return NULL ;
17941765 }
17951766
1796- PyTypeObject * type = Py_TYPE (self );
1797- retval = (HMACobject * )type -> tp_alloc (type , 0 );
1767+ retval = PyObject_New (HMACobject , Py_TYPE (self ));
17981768 if (retval == NULL ) {
17991769 HMAC_CTX_free (ctx );
18001770 return NULL ;
@@ -1806,26 +1776,17 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
18061776}
18071777
18081778static void
1809- _hmac_dealloc (PyObject * op )
1779+ _hmac_dealloc (HMACobject * self )
18101780{
1811- PyTypeObject * tp = Py_TYPE (op );
1812- PyObject_GC_UnTrack (op );
1813- HMACobject * self = HMACobject_CAST (op );
1781+ PyTypeObject * tp = Py_TYPE (self );
18141782 if (self -> ctx != NULL ) {
18151783 HMAC_CTX_free (self -> ctx );
18161784 self -> ctx = NULL ;
18171785 }
1818- tp -> tp_free (self );
1786+ PyObject_Free (self );
18191787 Py_DECREF (tp );
18201788}
18211789
1822- static int
1823- _hmac_traverse (PyObject * op , visitproc visit , void * arg )
1824- {
1825- Py_VISIT (Py_TYPE (op ));
1826- return 0 ;
1827- }
1828-
18291790static PyObject *
18301791_hmac_repr (HMACobject * self )
18311792{
@@ -1993,22 +1954,16 @@ digest_size -- number of bytes in digest() output\n");
19931954static PyType_Slot HMACtype_slots [] = {
19941955 {Py_tp_doc , (char * )hmactype_doc },
19951956 {Py_tp_repr , (reprfunc )_hmac_repr },
1996- {Py_tp_dealloc , _hmac_dealloc },
1997- {Py_tp_traverse , _hmac_traverse },
1957+ {Py_tp_dealloc ,(destructor )_hmac_dealloc },
19981958 {Py_tp_methods , HMAC_methods },
19991959 {Py_tp_getset , HMAC_getset },
20001960 {0 , NULL }
20011961};
20021962
20031963PyType_Spec HMACtype_spec = {
2004- .name = "_hashlib.HMAC" ,
2005- .basicsize = sizeof (HMACobject ),
2006- .flags = (
2007- Py_TPFLAGS_DEFAULT
2008- | Py_TPFLAGS_DISALLOW_INSTANTIATION
2009- | Py_TPFLAGS_IMMUTABLETYPE
2010- | Py_TPFLAGS_HAVE_GC
2011- ),
1964+ "_hashlib.HMAC" , /* name */
1965+ sizeof (HMACobject ), /* basicsize */
1966+ .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE ,
20121967 .slots = HMACtype_slots ,
20131968};
20141969
0 commit comments