@@ -1458,7 +1458,7 @@ functools_copy_attr(PyObject *wrapper, PyObject *wrapped, PyObject *name)
14581458 int res = PyObject_GetOptionalAttr (wrapped , name , & value );
14591459 if (value != NULL ) {
14601460 res = PyObject_SetAttr (wrapper , name , value );
1461- Py_DECREF (value );
1461+ PyRegion_CLEARLOCAL (value );
14621462 }
14631463 return res ;
14641464}
@@ -1821,8 +1821,8 @@ sm_dealloc(PyObject *self)
18211821{
18221822 staticmethod * sm = _PyStaticMethod_CAST (self );
18231823 _PyObject_GC_UNTRACK ((PyObject * )sm );
1824- Py_XDECREF ( sm -> sm_callable );
1825- Py_XDECREF ( sm -> sm_dict );
1824+ PyRegion_CLEAR ( sm , sm -> sm_callable );
1825+ PyRegion_CLEAR ( sm , sm -> sm_dict );
18261826 Py_TYPE (sm )-> tp_free ((PyObject * )sm );
18271827}
18281828
@@ -1839,8 +1839,8 @@ static int
18391839sm_clear (PyObject * self )
18401840{
18411841 staticmethod * sm = _PyStaticMethod_CAST (self );
1842- Py_CLEAR ( sm -> sm_callable );
1843- Py_CLEAR ( sm -> sm_dict );
1842+ PyRegion_CLEAR ( sm , sm -> sm_callable );
1843+ PyRegion_CLEAR ( sm , sm -> sm_dict );
18441844 return 0 ;
18451845}
18461846
@@ -1854,7 +1854,7 @@ sm_descr_get(PyObject *self, PyObject *obj, PyObject *type)
18541854 "uninitialized staticmethod object" );
18551855 return NULL ;
18561856 }
1857- return Py_NewRef (sm -> sm_callable );
1857+ return PyRegion_NewRef (sm -> sm_callable );
18581858}
18591859
18601860static int
@@ -1867,7 +1867,8 @@ sm_init(PyObject *self, PyObject *args, PyObject *kwds)
18671867 return -1 ;
18681868 if (!PyArg_UnpackTuple (args , "staticmethod" , 1 , 1 , & callable ))
18691869 return -1 ;
1870- Py_XSETREF (sm -> sm_callable , Py_NewRef (callable ));
1870+ if (PyRegion_XSETNEWREF (sm , sm -> sm_callable , callable ))
1871+ return -1 ;
18711872
18721873 if (functools_wraps ((PyObject * )sm , sm -> sm_callable ) < 0 ) {
18731874 return -1 ;
@@ -2010,6 +2011,7 @@ PyTypeObject PyStaticMethod_Type = {
20102011 PyType_GenericNew , /* tp_new */
20112012 PyObject_GC_Del , /* tp_free */
20122013 .tp_reachable = _PyObject_ReachableVisitTypeAndTraverse ,
2014+ .tp_flags2 = Py_TPFLAGS2_REGION_AWARE ,
20132015};
20142016
20152017PyObject *
0 commit comments