@@ -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