@@ -752,9 +752,7 @@ py_wrapper_EVP_MD_CTX_new(void)
752752static HASHobject *
753753new_hash_object (PyTypeObject * type )
754754{
755- assert (type != NULL );
756- assert (type -> tp_alloc != NULL );
757- HASHobject * retval = (HASHobject * )type -> tp_alloc (type , 0 );
755+ HASHobject * retval = PyObject_New (HASHobject , type );
758756 if (retval == NULL ) {
759757 return NULL ;
760758 }
@@ -794,21 +792,13 @@ _hashlib_HASH_hash(HASHobject *self, const void *vp, Py_ssize_t len)
794792static void
795793_hashlib_HASH_dealloc (PyObject * op )
796794{
797- PyTypeObject * tp = Py_TYPE (op );
798- PyObject_GC_UnTrack (op );
799795 HASHobject * self = HASHobject_CAST (op );
796+ PyTypeObject * tp = Py_TYPE (self );
800797 EVP_MD_CTX_free (self -> ctx );
801- tp -> tp_free (self );
798+ PyObject_Free (self );
802799 Py_DECREF (tp );
803800}
804801
805- static int
806- _hashlib_HASH_traverse (PyObject * op , visitproc visit , void * arg )
807- {
808- Py_VISIT (Py_TYPE (op ));
809- return 0 ;
810- }
811-
812802static int
813803_hashlib_HASH_copy_locked (HASHobject * self , EVP_MD_CTX * new_ctx_p )
814804{
@@ -1003,7 +993,6 @@ PyDoc_STRVAR(HASHobject_type_doc,
1003993
1004994static PyType_Slot HASHobject_type_slots [] = {
1005995 {Py_tp_dealloc , _hashlib_HASH_dealloc },
1006- {Py_tp_traverse , _hashlib_HASH_traverse },
1007996 {Py_tp_repr , _hashlib_HASH_repr },
1008997 {Py_tp_doc , (char * )HASHobject_type_doc },
1009998 {Py_tp_methods , HASH_methods },
@@ -1019,7 +1008,6 @@ static PyType_Spec HASHobject_type_spec = {
10191008 | Py_TPFLAGS_BASETYPE
10201009 | Py_TPFLAGS_DISALLOW_INSTANTIATION
10211010 | Py_TPFLAGS_IMMUTABLETYPE
1022- | Py_TPFLAGS_HAVE_GC
10231011 ),
10241012 .slots = HASHobject_type_slots
10251013};
@@ -1177,8 +1165,6 @@ PyDoc_STRVAR(HASHXOFobject_type_doc,
11771165"digest_size -- number of bytes in this hashes output" );
11781166
11791167static PyType_Slot HASHXOFobject_type_slots [] = {
1180- {Py_tp_dealloc , _hashlib_HASH_dealloc },
1181- {Py_tp_traverse , _hashlib_HASH_traverse },
11821168 {Py_tp_doc , (char * )HASHXOFobject_type_doc },
11831169 {Py_tp_methods , HASHXOFobject_methods },
11841170 {Py_tp_getset , HASHXOFobject_getsets },
@@ -1193,7 +1179,6 @@ static PyType_Spec HASHXOFobject_type_spec = {
11931179 | Py_TPFLAGS_BASETYPE
11941180 | Py_TPFLAGS_DISALLOW_INSTANTIATION
11951181 | Py_TPFLAGS_IMMUTABLETYPE
1196- | Py_TPFLAGS_HAVE_GC
11971182 ),
11981183 .slots = HASHXOFobject_type_slots
11991184};
@@ -1917,8 +1902,7 @@ _hashlib_hmac_new_impl(PyObject *module, Py_buffer *key, PyObject *msg_obj,
19171902 goto error ;
19181903 }
19191904
1920- assert (state -> HMAC_type != NULL );
1921- self = (HMACobject * )state -> HMAC_type -> tp_alloc (state -> HMAC_type , 0 );
1905+ self = PyObject_New (HMACobject , state -> HMAC_type );
19221906 if (self == NULL ) {
19231907 goto error ;
19241908 }
@@ -2024,8 +2008,7 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
20242008 return NULL ;
20252009 }
20262010
2027- PyTypeObject * type = Py_TYPE (self );
2028- retval = (HMACobject * )type -> tp_alloc (type , 0 );
2011+ retval = PyObject_New (HMACobject , Py_TYPE (self ));
20292012 if (retval == NULL ) {
20302013 HMAC_CTX_free (ctx );
20312014 return NULL ;
@@ -2039,24 +2022,16 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
20392022static void
20402023_hmac_dealloc (PyObject * op )
20412024{
2042- PyTypeObject * tp = Py_TYPE (op );
2043- PyObject_GC_UnTrack (op );
20442025 HMACobject * self = HMACobject_CAST (op );
2026+ PyTypeObject * tp = Py_TYPE (self );
20452027 if (self -> ctx != NULL ) {
20462028 HMAC_CTX_free (self -> ctx );
20472029 self -> ctx = NULL ;
20482030 }
2049- tp -> tp_free (self );
2031+ PyObject_Free (self );
20502032 Py_DECREF (tp );
20512033}
20522034
2053- static int
2054- _hashlib_HMAC_traverse (PyObject * op , visitproc visit , void * arg )
2055- {
2056- Py_VISIT (Py_TYPE (op ));
2057- return 0 ;
2058- }
2059-
20602035static PyObject *
20612036_hmac_repr (PyObject * op )
20622037{
@@ -2223,21 +2198,15 @@ static PyType_Slot HMACtype_slots[] = {
22232198 {Py_tp_doc , (char * )hmactype_doc },
22242199 {Py_tp_repr , _hmac_repr },
22252200 {Py_tp_dealloc , _hmac_dealloc },
2226- {Py_tp_traverse , _hashlib_HMAC_traverse },
22272201 {Py_tp_methods , HMAC_methods },
22282202 {Py_tp_getset , HMAC_getset },
22292203 {0 , NULL }
22302204};
22312205
22322206PyType_Spec HMACtype_spec = {
2233- .name = "_hashlib.HMAC" ,
2234- .basicsize = sizeof (HMACobject ),
2235- .flags = (
2236- Py_TPFLAGS_DEFAULT
2237- | Py_TPFLAGS_DISALLOW_INSTANTIATION
2238- | Py_TPFLAGS_IMMUTABLETYPE
2239- | Py_TPFLAGS_HAVE_GC
2240- ),
2207+ "_hashlib.HMAC" , /* name */
2208+ sizeof (HMACobject ), /* basicsize */
2209+ .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION | Py_TPFLAGS_IMMUTABLETYPE ,
22412210 .slots = HMACtype_slots ,
22422211};
22432212
0 commit comments