]> granicus.if.org Git - python/commitdiff
Close #24784: Fix compilation without thread support
authorVictor Stinner <victor.stinner@gmail.com>
Sun, 11 Oct 2015 07:54:42 +0000 (09:54 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Sun, 11 Oct 2015 07:54:42 +0000 (09:54 +0200)
Add "#ifdef WITH_THREAD" around cals to:

* PyGILState_Check()
* _PyImport_AcquireLock()
* _PyImport_ReleaseLock()

Modules/_posixsubprocess.c
Modules/socketmodule.c
Python/fileutils.c

index a327fc56b21de563ca35ef6108876e35ae869735..800b3019c8fd3822f1754e13d44c2e01bcd3b218 100644 (file)
@@ -549,7 +549,9 @@ subprocess_fork_exec(PyObject* self, PyObject *args)
     int need_to_reenable_gc = 0;
     char *const *exec_array, *const *argv = NULL, *const *envp = NULL;
     Py_ssize_t arg_num;
+#ifdef WITH_THREAD
     int import_lock_held = 0;
+#endif
 
     if (!PyArg_ParseTuple(
             args, "OOpOOOiiiiiiiiiiO:fork_exec",
@@ -644,8 +646,10 @@ subprocess_fork_exec(PyObject* self, PyObject *args)
         preexec_fn_args_tuple = PyTuple_New(0);
         if (!preexec_fn_args_tuple)
             goto cleanup;
+#ifdef WITH_THREAD
         _PyImport_AcquireLock();
         import_lock_held = 1;
+#endif
     }
 
     if (cwd_obj != Py_None) {
@@ -688,12 +692,14 @@ subprocess_fork_exec(PyObject* self, PyObject *args)
         /* Capture the errno exception before errno can be clobbered. */
         PyErr_SetFromErrno(PyExc_OSError);
     }
-    if (preexec_fn != Py_None &&
-        _PyImport_ReleaseLock() < 0 && !PyErr_Occurred()) {
+#ifdef WITH_THREAD
+    if (preexec_fn != Py_None
+        && _PyImport_ReleaseLock() < 0 && !PyErr_Occurred()) {
         PyErr_SetString(PyExc_RuntimeError,
                         "not holding the import lock");
     }
     import_lock_held = 0;
+#endif
 
     /* Parent process */
     if (envp)
@@ -716,8 +722,10 @@ subprocess_fork_exec(PyObject* self, PyObject *args)
     return PyLong_FromPid(pid);
 
 cleanup:
+#ifdef WITH_THREAD
     if (import_lock_held)
         _PyImport_ReleaseLock();
+#endif
     if (envp)
         _Py_FreeCharPArray(envp);
     if (argv)
index d9c70f8665446f972573c51dd844e5157bc574b0..bae9634ef2b01ecbef0fd412522b6265e99ecae3 100644 (file)
@@ -719,8 +719,10 @@ sock_call_ex(PySocketSockObject *s,
     int deadline_initialized = 0;
     int res;
 
+#ifdef WITH_THREAD
     /* sock_call() must be called with the GIL held. */
     assert(PyGILState_Check());
+#endif
 
     /* outer loop to retry select() when select() is interrupted by a signal
        or to retry select()+sock_func() on false positive (see above) */
index bccd32145c6f94fc4984a731f3398567e91261a3..079918c4a302e1735f0da6946842ad02768c6ee7 100644 (file)
@@ -986,8 +986,10 @@ _Py_open_impl(const char *pathname, int flags, int gil_held)
 int
 _Py_open(const char *pathname, int flags)
 {
+#ifdef WITH_THREAD
     /* _Py_open() must be called with the GIL held. */
     assert(PyGILState_Check());
+#endif
     return _Py_open_impl(pathname, flags, 1);
 }
 
@@ -1080,7 +1082,9 @@ _Py_fopen_obj(PyObject *path, const char *mode)
     wchar_t wmode[10];
     int usize;
 
+#ifdef WITH_THREAD
     assert(PyGILState_Check());
+#endif
 
     if (!PyUnicode_Check(path)) {
         PyErr_Format(PyExc_TypeError,
@@ -1108,7 +1112,9 @@ _Py_fopen_obj(PyObject *path, const char *mode)
     PyObject *bytes;
     char *path_bytes;
 
+#ifdef WITH_THREAD
     assert(PyGILState_Check());
+#endif
 
     if (!PyUnicode_FSConverter(path, &bytes))
         return NULL;