Rob Riggs wrote:
"""
Spec says that on success pthread_create returns 0. It does not say
that an error code will be < 0. Linux glibc2 pthread_create() returns
ENOMEM (12) when one exceed process limits. (It looks like it should
return EAGAIN, but that's another story.)
For reference, see:
http://www.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html
"""
[I have a feeling that similar bugs were fixed before; perhaps someone
could check that all error checks no check for != 0?]
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index 0b4041a..fd03e91 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -178,14 +178,14 @@
#endif
);
- if (success >= 0) {
+ if (success == 0) {
#if defined(PY_PTHREAD_D4) || defined(PY_PTHREAD_D6) || defined(PY_PTHREAD_D7)
pthread_detach(&th);
#elif defined(PY_PTHREAD_STD)
pthread_detach(th);
#endif
}
- return success < 0 ? 0 : 1;
+ return success != 0 ? 0 : 1;
}
long PyThread_get_thread_ident _P0()