File tree Expand file tree Collapse file tree 1 file changed +23
-1
lines changed Expand file tree Collapse file tree 1 file changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -64,7 +64,7 @@ extern "C" {
6464
6565# define  _Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED (op )                           \
6666    if (Py_REFCNT(op) != 1) {                                                    \
67-         _Py_CRITICAL_SECTION_ASSERT_MUTEX_LOCKED(& _PyObject_CAST(op)->ob_mutex ); \
67+         _PyCriticalSection_AssertHeldObj( _PyObject_CAST(op)); \
6868    }
6969
7070#else    /* Py_DEBUG */ 
@@ -239,6 +239,28 @@ _PyCriticalSection_AssertHeld(PyMutex *mutex)
239239#endif 
240240}
241241
242+ static  inline  void 
243+ _PyCriticalSection_AssertHeldObj (PyObject  * op )
244+ {
245+ #ifdef  Py_DEBUG 
246+     PyMutex  * mutex  =  & _PyObject_CAST (op )-> ob_mutex ;
247+     PyThreadState  * tstate  =  _PyThreadState_GET ();
248+     uintptr_t  prev  =  tstate -> critical_section ;
249+     if  (prev  &  _Py_CRITICAL_SECTION_TWO_MUTEXES ) {
250+         PyCriticalSection2  * cs  =  (PyCriticalSection2  * )(prev  &  ~_Py_CRITICAL_SECTION_MASK );
251+         _PyObject_ASSERT_WITH_MSG (op ,
252+             (cs  !=  NULL  &&  (cs -> _cs_base ._cs_mutex  ==  mutex  ||  cs -> _cs_mutex2  ==  mutex )),
253+             "Critical section of object is not held" );
254+     }
255+     else  {
256+         PyCriticalSection  * cs  =  (PyCriticalSection  * )(prev  &  ~_Py_CRITICAL_SECTION_MASK );
257+         _PyObject_ASSERT_WITH_MSG (op ,
258+             (cs  !=  NULL  &&  cs -> _cs_mutex  ==  mutex ),
259+             "Critical section of object is not held" );
260+     }
261+ 
262+ #endif 
263+ }
242264#endif  /* Py_GIL_DISABLED */ 
243265
244266#ifdef  __cplusplus 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments