File tree Expand file tree Collapse file tree 4 files changed +15
-30
lines changed
Misc/NEWS.d/next/Core and Builtins Expand file tree Collapse file tree 4 files changed +15
-30
lines changed Original file line number Diff line number Diff line change 1
- Port :mod: `sha1 ` to multi-phase init
2
- Port :mod: `sha512 ` to multi-phase init
3
- Port :mod: `md5 ` to multi-phase init
1
+ Port :mod: `sha1 `, :mod: `sha512 `, and :mod: `md5 ` to multi-phase init (PEP 489)
Original file line number Diff line number Diff line change @@ -322,7 +322,8 @@ typedef struct {
322
322
PyTypeObject * md5_type ;
323
323
} MD5State ;
324
324
325
- static inline MD5State * md5_get_state (PyObject * module ) {
325
+ static inline MD5State * md5_get_state (PyObject * module )
326
+ {
326
327
void * state = PyModule_GetState (module );
327
328
assert (state != NULL );
328
329
return (MD5State * )state ;
@@ -339,8 +340,9 @@ newMD5object(MD5State * st)
339
340
static void
340
341
MD5_dealloc (PyObject * ptr )
341
342
{
342
- Py_DECREF ( Py_TYPE (ptr ) );
343
+ PyObject * tp = Py_TYPE (ptr );
343
344
PyObject_Del (ptr );
345
+ Py_DECREF (tp );
344
346
}
345
347
346
348
@@ -572,10 +574,6 @@ static int md5_exec(PyObject *m)
572
574
return -1 ;
573
575
}
574
576
575
- if (PyType_Ready (st -> md5_type ) < 0 ) {
576
- return -1 ;
577
- }
578
-
579
577
Py_INCREF ((PyObject * )st -> md5_type );
580
578
if (PyModule_AddObject (m , "MD5Type" , (PyObject * )st -> md5_type ) < 0 ) {
581
579
Py_DECREF (st -> md5_type );
Original file line number Diff line number Diff line change @@ -299,7 +299,8 @@ typedef struct {
299
299
PyTypeObject * sha1_type ;
300
300
} SHA1State ;
301
301
302
- static inline SHA1State * sha1_get_state (PyObject * module ) {
302
+ static inline SHA1State * sha1_get_state (PyObject * module )
303
+ {
303
304
void * state = PyModule_GetState (module );
304
305
assert (state != NULL );
305
306
return (SHA1State * )state ;
@@ -317,8 +318,9 @@ newSHA1object(SHA1State *st)
317
318
static void
318
319
SHA1_dealloc (PyObject * ptr )
319
320
{
320
- Py_DECREF ( Py_TYPE (ptr ) );
321
+ PyObject * tp = Py_TYPE (ptr );
321
322
PyObject_Del (ptr );
323
+ Py_DECREF (tp );
322
324
}
323
325
324
326
@@ -538,7 +540,8 @@ _sha1_free(void *module)
538
540
_sha1_clear ((PyObject * )module );
539
541
}
540
542
541
- static int sha1_exec (PyObject * module ) {
543
+ static int sha1_exec (PyObject * module )
544
+ {
542
545
SHA1State * st = sha1_get_state (module );
543
546
544
547
st -> sha1_type = (PyTypeObject * )PyType_FromModuleAndSpec (
@@ -548,12 +551,6 @@ static int sha1_exec(PyObject *module) {
548
551
return -1 ;
549
552
}
550
553
551
- //cannot use PyModule_AddType becuase "SHA1Type"
552
- //isn't the same as _PyType_Name(st->sha1_type)
553
- if (PyType_Ready (st -> sha1_type ) < 0 ) {
554
- return -1 ;
555
- }
556
-
557
554
Py_INCREF (st -> sha1_type );
558
555
if (PyModule_AddObject (module ,
559
556
"SHA1Type" ,
Original file line number Diff line number Diff line change @@ -427,7 +427,8 @@ typedef struct {
427
427
PyTypeObject * sha512_type ;
428
428
} SHA512State ;
429
429
430
- static inline SHA512State * sha512_get_state (PyObject * module ) {
430
+ static inline SHA512State * sha512_get_state (PyObject * module )
431
+ {
431
432
void * state = PyModule_GetState (module );
432
433
assert (state != NULL );
433
434
return (SHA512State * )state ;
@@ -446,8 +447,9 @@ static SHAobject *newSHA512object(SHA512State *st) {
446
447
static void
447
448
SHA512_dealloc (PyObject * ptr )
448
449
{
449
- Py_DECREF ( Py_TYPE (ptr ) );
450
+ PyObject * tp = Py_TYPE (ptr );
450
451
PyObject_Del (ptr );
452
+ Py_DECREF (tp );
451
453
}
452
454
453
455
@@ -754,16 +756,6 @@ static int sha512_exec(PyObject *m)
754
756
return -1 ;
755
757
}
756
758
757
- //cannot use PyModule_AddType becuase "SHA1Type"
758
- //isn't the same as _PyType_Name(st->sha1_type)
759
- if (PyType_Ready (st -> sha384_type ) < 0 ) {
760
- return -1 ;
761
- }
762
-
763
- if (PyType_Ready (st -> sha512_type ) < 0 ) {
764
- return -1 ;
765
- }
766
-
767
759
Py_INCREF (st -> sha384_type );
768
760
if (PyModule_AddObject (m , "SHA384Type" , (PyObject * )st -> sha384_type ) < 0 ) {
769
761
Py_DECREF (st -> sha384_type );
You can’t perform that action at this time.
0 commit comments