@@ -752,9 +752,7 @@ py_wrapper_EVP_MD_CTX_new(void)
752
752
static HASHobject *
753
753
new_hash_object (PyTypeObject * type )
754
754
{
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 );
758
756
if (retval == NULL ) {
759
757
return NULL ;
760
758
}
@@ -794,21 +792,13 @@ _hashlib_HASH_hash(HASHobject *self, const void *vp, Py_ssize_t len)
794
792
static void
795
793
_hashlib_HASH_dealloc (PyObject * op )
796
794
{
797
- PyTypeObject * tp = Py_TYPE (op );
798
- PyObject_GC_UnTrack (op );
799
795
HASHobject * self = HASHobject_CAST (op );
796
+ PyTypeObject * tp = Py_TYPE (self );
800
797
EVP_MD_CTX_free (self -> ctx );
801
- tp -> tp_free (self );
798
+ PyObject_Free (self );
802
799
Py_DECREF (tp );
803
800
}
804
801
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
-
812
802
static int
813
803
_hashlib_HASH_copy_locked (HASHobject * self , EVP_MD_CTX * new_ctx_p )
814
804
{
@@ -1003,7 +993,6 @@ PyDoc_STRVAR(HASHobject_type_doc,
1003
993
1004
994
static PyType_Slot HASHobject_type_slots [] = {
1005
995
{Py_tp_dealloc , _hashlib_HASH_dealloc },
1006
- {Py_tp_traverse , _hashlib_HASH_traverse },
1007
996
{Py_tp_repr , _hashlib_HASH_repr },
1008
997
{Py_tp_doc , (char * )HASHobject_type_doc },
1009
998
{Py_tp_methods , HASH_methods },
@@ -1019,7 +1008,6 @@ static PyType_Spec HASHobject_type_spec = {
1019
1008
| Py_TPFLAGS_BASETYPE
1020
1009
| Py_TPFLAGS_DISALLOW_INSTANTIATION
1021
1010
| Py_TPFLAGS_IMMUTABLETYPE
1022
- | Py_TPFLAGS_HAVE_GC
1023
1011
),
1024
1012
.slots = HASHobject_type_slots
1025
1013
};
@@ -1177,8 +1165,6 @@ PyDoc_STRVAR(HASHXOFobject_type_doc,
1177
1165
"digest_size -- number of bytes in this hashes output" );
1178
1166
1179
1167
static PyType_Slot HASHXOFobject_type_slots [] = {
1180
- {Py_tp_dealloc , _hashlib_HASH_dealloc },
1181
- {Py_tp_traverse , _hashlib_HASH_traverse },
1182
1168
{Py_tp_doc , (char * )HASHXOFobject_type_doc },
1183
1169
{Py_tp_methods , HASHXOFobject_methods },
1184
1170
{Py_tp_getset , HASHXOFobject_getsets },
@@ -1193,7 +1179,6 @@ static PyType_Spec HASHXOFobject_type_spec = {
1193
1179
| Py_TPFLAGS_BASETYPE
1194
1180
| Py_TPFLAGS_DISALLOW_INSTANTIATION
1195
1181
| Py_TPFLAGS_IMMUTABLETYPE
1196
- | Py_TPFLAGS_HAVE_GC
1197
1182
),
1198
1183
.slots = HASHXOFobject_type_slots
1199
1184
};
@@ -1917,8 +1902,7 @@ _hashlib_hmac_new_impl(PyObject *module, Py_buffer *key, PyObject *msg_obj,
1917
1902
goto error ;
1918
1903
}
1919
1904
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 );
1922
1906
if (self == NULL ) {
1923
1907
goto error ;
1924
1908
}
@@ -2024,8 +2008,7 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
2024
2008
return NULL ;
2025
2009
}
2026
2010
2027
- PyTypeObject * type = Py_TYPE (self );
2028
- retval = (HMACobject * )type -> tp_alloc (type , 0 );
2011
+ retval = PyObject_New (HMACobject , Py_TYPE (self ));
2029
2012
if (retval == NULL ) {
2030
2013
HMAC_CTX_free (ctx );
2031
2014
return NULL ;
@@ -2039,24 +2022,16 @@ _hashlib_HMAC_copy_impl(HMACobject *self)
2039
2022
static void
2040
2023
_hmac_dealloc (PyObject * op )
2041
2024
{
2042
- PyTypeObject * tp = Py_TYPE (op );
2043
- PyObject_GC_UnTrack (op );
2044
2025
HMACobject * self = HMACobject_CAST (op );
2026
+ PyTypeObject * tp = Py_TYPE (self );
2045
2027
if (self -> ctx != NULL ) {
2046
2028
HMAC_CTX_free (self -> ctx );
2047
2029
self -> ctx = NULL ;
2048
2030
}
2049
- tp -> tp_free (self );
2031
+ PyObject_Free (self );
2050
2032
Py_DECREF (tp );
2051
2033
}
2052
2034
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
-
2060
2035
static PyObject *
2061
2036
_hmac_repr (PyObject * op )
2062
2037
{
@@ -2223,21 +2198,15 @@ static PyType_Slot HMACtype_slots[] = {
2223
2198
{Py_tp_doc , (char * )hmactype_doc },
2224
2199
{Py_tp_repr , _hmac_repr },
2225
2200
{Py_tp_dealloc , _hmac_dealloc },
2226
- {Py_tp_traverse , _hashlib_HMAC_traverse },
2227
2201
{Py_tp_methods , HMAC_methods },
2228
2202
{Py_tp_getset , HMAC_getset },
2229
2203
{0 , NULL }
2230
2204
};
2231
2205
2232
2206
PyType_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 ,
2241
2210
.slots = HMACtype_slots ,
2242
2211
};
2243
2212
0 commit comments