summaryrefslogtreecommitdiff
path: root/Modules/_multiprocessing/multiprocessing.c
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2010-10-17 04:28:14 +0000
committerGregory P. Smith <greg@mad-scientist.com>2010-10-17 04:28:14 +0000
commit886a1cd7dc43bbdba6e69a2fa44b9daa888eee08 (patch)
tree1f2cb2e9e7691d9788025858f8b8f8d39c85403b /Modules/_multiprocessing/multiprocessing.c
parent6913cb0373e11ac372f6eea563de9e667313c39b (diff)
downloadcpython-git-886a1cd7dc43bbdba6e69a2fa44b9daa888eee08.tar.gz
Merged revisions 85586-85587,85596-85598 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85586 | gregory.p.smith | 2010-10-16 17:17:24 -0700 (Sat, 16 Oct 2010) | 2 lines fix for netbsd. ........ r85587 | gregory.p.smith | 2010-10-16 17:43:10 -0700 (Sat, 16 Oct 2010) | 3 lines applying netbsd-wizs-mod.patch from issue5510 - fixes for netbsd (and dragonflybsd?) ........ r85596 | gregory.p.smith | 2010-10-16 19:14:36 -0700 (Sat, 16 Oct 2010) | 6 lines Fix multiprocessing Semaphore's on netbsd5. SEM_VALUE_MAX is defined as (~0U) on NetBSD which was causing it to appear as -1 when used as a signed int for _multprocessing.SemLock.SEM_VALUE_MAX. This works around the problem by substituting INT_MAX on systems where it appears negative when used as an int. ........ r85597 | gregory.p.smith | 2010-10-16 19:57:19 -0700 (Sat, 16 Oct 2010) | 2 lines skip test_itimer_virtual on NetBSD to prevent the test suite from hanging. ........ r85598 | gregory.p.smith | 2010-10-16 20:09:12 -0700 (Sat, 16 Oct 2010) | 2 lines Avoid hanging the test on netbsd5. ........
Diffstat (limited to 'Modules/_multiprocessing/multiprocessing.c')
-rw-r--r--Modules/_multiprocessing/multiprocessing.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/Modules/_multiprocessing/multiprocessing.c b/Modules/_multiprocessing/multiprocessing.c
index fde7c56d60..448868fe4b 100644
--- a/Modules/_multiprocessing/multiprocessing.c
+++ b/Modules/_multiprocessing/multiprocessing.c
@@ -256,8 +256,19 @@ init_multiprocessing(void)
if (PyType_Ready(&SemLockType) < 0)
return;
Py_INCREF(&SemLockType);
- PyDict_SetItemString(SemLockType.tp_dict, "SEM_VALUE_MAX",
- Py_BuildValue("i", SEM_VALUE_MAX));
+ {
+ PyObject *py_sem_value_max;
+ /* Some systems define SEM_VALUE_MAX as an unsigned value that
+ * causes it to be negative when used as an int (NetBSD). */
+ if ((int)(SEM_VALUE_MAX) < 0)
+ py_sem_value_max = PyLong_FromLong(INT_MAX);
+ else
+ py_sem_value_max = PyLong_FromLong(SEM_VALUE_MAX);
+ if (py_sem_value_max == NULL)
+ return NULL;
+ PyDict_SetItemString(SemLockType.tp_dict, "SEM_VALUE_MAX",
+ py_sem_value_max);
+ }
PyModule_AddObject(module, "SemLock", (PyObject*)&SemLockType);
#endif