mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Allow local use of static PyMutex
in the C analyzer (#127102)
This commit is contained in:
parent
8c98ed846a
commit
89125e9f9f
2 changed files with 14 additions and 1 deletions
|
@ -280,12 +280,26 @@ def _is_kwlist(decl):
|
|||
vartype = ''.join(str(decl.vartype).split())
|
||||
return vartype == 'char*[]'
|
||||
|
||||
def _is_local_static_mutex(decl):
|
||||
if not hasattr(decl, "vartype"):
|
||||
return False
|
||||
|
||||
if not hasattr(decl, "parent") or decl.parent is None:
|
||||
# We only want to allow local variables
|
||||
return False
|
||||
|
||||
vartype = decl.vartype
|
||||
return (vartype.typespec == 'PyMutex') and (decl.storage == 'static')
|
||||
|
||||
def _has_other_supported_type(decl):
|
||||
if hasattr(decl, 'file') and decl.file.filename.endswith('.c.h'):
|
||||
assert 'clinic' in decl.file.filename, (decl,)
|
||||
if decl.name == '_kwtuple':
|
||||
return True
|
||||
if _is_local_static_mutex(decl):
|
||||
# GH-127081: Local static mutexes are used to
|
||||
# wrap libc functions that aren't thread safe
|
||||
return True
|
||||
vartype = str(decl.vartype).split()
|
||||
if vartype[0] == 'struct':
|
||||
vartype = vartype[1:]
|
||||
|
|
|
@ -739,7 +739,6 @@ Modules/expat/xmlrole.c - declClose -
|
|||
Modules/expat/xmlrole.c - error -
|
||||
|
||||
## other
|
||||
Modules/grpmodule.c grp_getgrall_impl getgrall_mutex -
|
||||
Modules/_io/_iomodule.c - _PyIO_Module -
|
||||
Modules/_sqlite/module.c - _sqlite3module -
|
||||
Modules/clinic/md5module.c.h _md5_md5 _keywords -
|
||||
|
|
Can't render this file because it has a wrong number of fields in line 4.
|
Loading…
Add table
Add a link
Reference in a new issue