Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
bde08132
Commit
bde08132
authored
Jun 29, 2006
by
Thomas Heller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Protect the thread api calls in the _ctypes extension module within
#ifdef WITH_THREADS/#endif blocks. Found by Sam Rushing.
parent
877fdb01
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
25 additions
and
1 deletion
+25
-1
Misc/NEWS
Misc/NEWS
+3
-0
Modules/_ctypes/_ctypes.c
Modules/_ctypes/_ctypes.c
+2
-0
Modules/_ctypes/callbacks.c
Modules/_ctypes/callbacks.c
+14
-1
Modules/_ctypes/callproc.c
Modules/_ctypes/callproc.c
+6
-0
No files found.
Misc/NEWS
View file @
bde08132
...
...
@@ -19,6 +19,9 @@ Core and builtins
Library
-------
- The '
_ctypes
' extension module now works when Python is configured
with the --without-threads option.
- Bug #1504333: Make sgmllib support angle brackets in quoted
attribute values.
...
...
Modules/_ctypes/_ctypes.c
View file @
bde08132
...
...
@@ -4555,7 +4555,9 @@ init_ctypes(void)
ob_type is the metatype (the 'type'), defaults to PyType_Type,
tp_base is the base type, defaults to 'object' aka PyBaseObject_Type.
*/
#ifdef WITH_THREADS
PyEval_InitThreads
();
#endif
m
=
Py_InitModule3
(
"_ctypes"
,
module_methods
,
module_docs
);
if
(
!
m
)
return
;
...
...
Modules/_ctypes/callbacks.c
View file @
bde08132
...
...
@@ -127,7 +127,9 @@ static void _CallPythonObject(void *mem,
PyObject
*
result
;
PyObject
*
arglist
=
NULL
;
int
nArgs
;
#ifdef WITH_THREADS
PyGILState_STATE
state
=
PyGILState_Ensure
();
#endif
nArgs
=
PySequence_Length
(
converters
);
/* Hm. What to return in case of error?
...
...
@@ -235,8 +237,9 @@ if (x == NULL) _AddTraceback(what, __FILE__, __LINE__ - 1), PyErr_Print()
Py_XDECREF
(
result
);
Done:
Py_XDECREF
(
arglist
);
#ifdef WITH_THREADS
PyGILState_Release
(
state
);
#endif
}
static
void
closure_fcn
(
ffi_cif
*
cif
,
...
...
@@ -397,12 +400,18 @@ STDAPI DllGetClassObject(REFCLSID rclsid,
LPVOID
*
ppv
)
{
long
result
;
#ifdef WITH_THREADS
PyGILState_STATE
state
;
#endif
LoadPython
();
#ifdef WITH_THREADS
state
=
PyGILState_Ensure
();
#endif
result
=
Call_GetClassObject
(
rclsid
,
riid
,
ppv
);
#ifdef WITH_THREADS
PyGILState_Release
(
state
);
#endif
return
result
;
}
...
...
@@ -454,9 +463,13 @@ long Call_CanUnloadNow(void)
STDAPI
DllCanUnloadNow
(
void
)
{
long
result
;
#ifdef WITH_THREADS
PyGILState_STATE
state
=
PyGILState_Ensure
();
#endif
result
=
Call_CanUnloadNow
();
#ifdef WITH_THREADS
PyGILState_Release
(
state
);
#endif
return
result
;
}
...
...
Modules/_ctypes/callproc.c
View file @
bde08132
...
...
@@ -617,7 +617,9 @@ static int _call_function_pointer(int flags,
void
*
resmem
,
int
argcount
)
{
#ifdef WITH_THREADS
PyThreadState
*
_save
=
NULL
;
/* For Py_BLOCK_THREADS and Py_UNBLOCK_THREADS */
#endif
ffi_cif
cif
;
int
cc
;
#ifdef MS_WIN32
...
...
@@ -649,8 +651,10 @@ static int _call_function_pointer(int flags,
return
-
1
;
}
#ifdef WITH_THREADS
if
((
flags
&
FUNCFLAG_PYTHONAPI
)
==
0
)
Py_UNBLOCK_THREADS
#endif
#ifdef MS_WIN32
#ifndef DONT_USE_SEH
__try
{
...
...
@@ -667,8 +671,10 @@ static int _call_function_pointer(int flags,
}
#endif
#endif
#ifdef WITH_THREADS
if
((
flags
&
FUNCFLAG_PYTHONAPI
)
==
0
)
Py_BLOCK_THREADS
#endif
#ifdef MS_WIN32
#ifndef DONT_USE_SEH
if
(
dwExceptionCode
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment