@@ -410,11 +410,11 @@ PyObject *
410
410
PyFunction_GetCode (PyObject * op )
411
411
{
412
412
PyObject * code = NULL ;
413
- Py_BEGIN_CRITICAL_SECTION (op );
414
413
if (!PyFunction_Check (op )) {
415
414
PyErr_BadInternalCall ();
416
415
return NULL ;
417
416
}
417
+ Py_BEGIN_CRITICAL_SECTION (op );
418
418
code = ((PyFunctionObject * ) op ) -> func_code ;
419
419
Py_END_CRITICAL_SECTION ();
420
420
return code ;
@@ -424,11 +424,11 @@ PyObject *
424
424
PyFunction_GetGlobals (PyObject * op )
425
425
{
426
426
PyObject * globals = NULL ;
427
- Py_BEGIN_CRITICAL_SECTION (op );
428
427
if (!PyFunction_Check (op )) {
429
428
PyErr_BadInternalCall ();
430
429
return NULL ;
431
430
}
431
+ Py_BEGIN_CRITICAL_SECTION (op );
432
432
globals = ((PyFunctionObject * ) op ) -> func_globals ;
433
433
Py_END_CRITICAL_SECTION ();
434
434
return globals ;
@@ -438,11 +438,11 @@ PyObject *
438
438
PyFunction_GetModule (PyObject * op )
439
439
{
440
440
PyObject * module = NULL ;
441
- Py_BEGIN_CRITICAL_SECTION (op );
442
441
if (!PyFunction_Check (op )) {
443
442
PyErr_BadInternalCall ();
444
443
return NULL ;
445
444
}
445
+ Py_BEGIN_CRITICAL_SECTION (op );
446
446
module = ((PyFunctionObject * ) op ) -> func_module ;
447
447
Py_END_CRITICAL_SECTION ();
448
448
return module ;
@@ -452,11 +452,11 @@ PyObject *
452
452
PyFunction_GetDefaults (PyObject * op )
453
453
{
454
454
PyObject * defaults = NULL ;
455
- Py_BEGIN_CRITICAL_SECTION (op );
456
455
if (!PyFunction_Check (op )) {
457
456
PyErr_BadInternalCall ();
458
457
return NULL ;
459
458
}
459
+ Py_BEGIN_CRITICAL_SECTION (op );
460
460
defaults = ((PyFunctionObject * ) op ) -> func_defaults ;
461
461
Py_END_CRITICAL_SECTION ();
462
462
return defaults ;
@@ -465,7 +465,6 @@ PyFunction_GetDefaults(PyObject *op)
465
465
int
466
466
PyFunction_SetDefaults (PyObject * op , PyObject * defaults )
467
467
{
468
- Py_BEGIN_CRITICAL_SECTION (op );
469
468
if (!PyFunction_Check (op )) {
470
469
PyErr_BadInternalCall ();
471
470
return -1 ;
@@ -479,6 +478,7 @@ PyFunction_SetDefaults(PyObject *op, PyObject *defaults)
479
478
PyErr_SetString (PyExc_SystemError , "non-tuple default args" );
480
479
return -1 ;
481
480
}
481
+ Py_BEGIN_CRITICAL_SECTION (op );
482
482
handle_func_event (PyFunction_EVENT_MODIFY_DEFAULTS ,
483
483
(PyFunctionObject * ) op , defaults );
484
484
_PyFunction_ClearVersion ((PyFunctionObject * )op );
@@ -500,11 +500,15 @@ PyFunction_SetVectorcall(PyFunctionObject *func, vectorcallfunc vectorcall)
500
500
PyObject *
501
501
PyFunction_GetKwDefaults (PyObject * op )
502
502
{
503
+ PyObject * kwdefaults = NULL ;
503
504
if (!PyFunction_Check (op )) {
504
505
PyErr_BadInternalCall ();
505
506
return NULL ;
506
507
}
507
- return FT_ATOMIC_LOAD_PTR (((PyFunctionObject * ) op ) -> func_kwdefaults );
508
+ Py_BEGIN_CRITICAL_SECTION (op );
509
+ kwdefaults = ((PyFunctionObject * ) op ) -> func_kwdefaults ;
510
+ Py_END_CRITICAL_SECTION ();
511
+ return kwdefaults ;
508
512
}
509
513
510
514
int
@@ -536,11 +540,15 @@ PyFunction_SetKwDefaults(PyObject *op, PyObject *defaults)
536
540
PyObject *
537
541
PyFunction_GetClosure (PyObject * op )
538
542
{
543
+ PyObject * closure = NULL ;
539
544
if (!PyFunction_Check (op )) {
540
545
PyErr_BadInternalCall ();
541
546
return NULL ;
542
547
}
543
- return FT_ATOMIC_LOAD_PTR (((PyFunctionObject * ) op ) -> func_closure );
548
+ Py_BEGIN_CRITICAL_SECTION (op );
549
+ closure = ((PyFunctionObject * ) op ) -> func_closure ;
550
+ Py_END_CRITICAL_SECTION ();
551
+ return closure ;
544
552
}
545
553
546
554
int
0 commit comments