@@ -282,8 +282,6 @@ typedef struct {
282
282
PyMutex mutex ; /* OpenSSL context lock */
283
283
} EVPobject ;
284
284
285
- #define EVPobject_CAST (op ) ((EVPobject *)(op))
286
-
287
285
typedef struct {
288
286
PyObject_HEAD
289
287
HMAC_CTX * ctx ; /* OpenSSL hmac context */
@@ -292,8 +290,6 @@ typedef struct {
292
290
PyMutex mutex ; /* HMAC context lock */
293
291
} HMACobject ;
294
292
295
- #define HMACobject_CAST (op ) ((HMACobject *)(op))
296
-
297
293
#include "clinic/_hashopenssl.c.h"
298
294
/*[clinic input]
299
295
module _hashlib
@@ -501,9 +497,7 @@ py_digest_by_digestmod(PyObject *module, PyObject *digestmod, enum Py_hash_type
501
497
static EVPobject *
502
498
newEVPobject (PyTypeObject * type )
503
499
{
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 );
507
501
if (retval == NULL ) {
508
502
return NULL ;
509
503
}
@@ -542,23 +536,14 @@ EVP_hash(EVPobject *self, const void *vp, Py_ssize_t len)
542
536
/* Internal methods for a hash object */
543
537
544
538
static void
545
- EVP_dealloc (PyObject * op )
539
+ EVP_dealloc (EVPobject * self )
546
540
{
547
- PyTypeObject * tp = Py_TYPE (op );
548
- PyObject_GC_UnTrack (op );
549
- EVPobject * self = EVPobject_CAST (op );
541
+ PyTypeObject * tp = Py_TYPE (self );
550
542
EVP_MD_CTX_free (self -> ctx );
551
- tp -> tp_free (self );
543
+ PyObject_Free (self );
552
544
Py_DECREF (tp );
553
545
}
554
546
555
- static int
556
- EVP_traverse (PyObject * op , visitproc visit , void * arg )
557
- {
558
- Py_VISIT (Py_TYPE (op ));
559
- return 0 ;
560
- }
561
-
562
547
static int
563
548
locked_EVP_MD_CTX_copy (EVP_MD_CTX * new_ctx_p , EVPobject * self )
564
549
{
@@ -796,7 +781,6 @@ PyDoc_STRVAR(hashtype_doc,
796
781
797
782
static PyType_Slot EVPtype_slots [] = {
798
783
{Py_tp_dealloc , EVP_dealloc },
799
- {Py_tp_traverse , EVP_traverse },
800
784
{Py_tp_repr , EVP_repr },
801
785
{Py_tp_doc , (char * )hashtype_doc },
802
786
{Py_tp_methods , EVP_methods },
@@ -805,16 +789,11 @@ static PyType_Slot EVPtype_slots[] = {
805
789
};
806
790
807
791
static 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
818
797
};
819
798
820
799
#ifdef PY_OPENSSL_HAS_SHAKE
@@ -955,25 +934,18 @@ PyDoc_STRVAR(hashxoftype_doc,
955
934
"digest_size -- number of bytes in this hashes output" );
956
935
957
936
static PyType_Slot EVPXOFtype_slots [] = {
958
- {Py_tp_dealloc , EVP_dealloc },
959
- {Py_tp_traverse , EVP_traverse },
960
937
{Py_tp_doc , (char * )hashxoftype_doc },
961
938
{Py_tp_methods , EVPXOF_methods },
962
939
{Py_tp_getset , EVPXOF_getseters },
963
940
{0 , 0 },
964
941
};
965
942
966
943
static 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
977
949
};
978
950
979
951
@@ -1687,8 +1659,7 @@ _hashlib_hmac_new_impl(PyObject *module, Py_buffer *key, PyObject *msg_obj,
1687
1659
}
1688
1660
1689
1661
_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 );
1692
1663
if (self == NULL ) {
1693
1664
goto error ;
1694
1665
}
@@ -1793,8 +1764,7 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
1793
1764
return NULL ;
1794
1765
}
1795
1766
1796
- PyTypeObject * type = Py_TYPE (self );
1797
- retval = (HMACobject * )type -> tp_alloc (type , 0 );
1767
+ retval = PyObject_New (HMACobject , Py_TYPE (self ));
1798
1768
if (retval == NULL ) {
1799
1769
HMAC_CTX_free (ctx );
1800
1770
return NULL ;
@@ -1806,26 +1776,17 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
1806
1776
}
1807
1777
1808
1778
static void
1809
- _hmac_dealloc (PyObject * op )
1779
+ _hmac_dealloc (HMACobject * self )
1810
1780
{
1811
- PyTypeObject * tp = Py_TYPE (op );
1812
- PyObject_GC_UnTrack (op );
1813
- HMACobject * self = HMACobject_CAST (op );
1781
+ PyTypeObject * tp = Py_TYPE (self );
1814
1782
if (self -> ctx != NULL ) {
1815
1783
HMAC_CTX_free (self -> ctx );
1816
1784
self -> ctx = NULL ;
1817
1785
}
1818
- tp -> tp_free (self );
1786
+ PyObject_Free (self );
1819
1787
Py_DECREF (tp );
1820
1788
}
1821
1789
1822
- static int
1823
- _hmac_traverse (PyObject * op , visitproc visit , void * arg )
1824
- {
1825
- Py_VISIT (Py_TYPE (op ));
1826
- return 0 ;
1827
- }
1828
-
1829
1790
static PyObject *
1830
1791
_hmac_repr (HMACobject * self )
1831
1792
{
@@ -1993,22 +1954,16 @@ digest_size -- number of bytes in digest() output\n");
1993
1954
static PyType_Slot HMACtype_slots [] = {
1994
1955
{Py_tp_doc , (char * )hmactype_doc },
1995
1956
{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 },
1998
1958
{Py_tp_methods , HMAC_methods },
1999
1959
{Py_tp_getset , HMAC_getset },
2000
1960
{0 , NULL }
2001
1961
};
2002
1962
2003
1963
PyType_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 ,
2012
1967
.slots = HMACtype_slots ,
2013
1968
};
2014
1969
0 commit comments