From: Martin v. Löwis Date: Sat, 20 Sep 2003 11:13:18 +0000 (+0000) Subject: Patch #805613: Fix usage of the PTH library. X-Git-Tag: v2.3.1~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6280f00d495bd6042c8f60aa10042d0c0ffae470;p=thirdparty%2FPython%2Fcpython.git Patch #805613: Fix usage of the PTH library. --- diff --git a/Misc/NEWS b/Misc/NEWS index 28750d5484c3..7e3ce1712530 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.3.1? Core and builtins ----------------- +- Patch #805613: Fix usage of the PTH library. + - Fixed a bug in the cache of length-one Unicode strings that could lead to a seg fault. The specific problem occurred when an earlier, non-fatal error left an uninitialized Unicode object in the diff --git a/Python/thread.c b/Python/thread.c index 87230e02e0ae..2298b383e79e 100644 --- a/Python/thread.c +++ b/Python/thread.c @@ -98,6 +98,7 @@ void PyThread_init_thread(void) #ifdef HAVE_PTH #include "thread_pth.h" +#undef _POSIX_THREADS #endif #ifdef _POSIX_THREADS diff --git a/Python/thread_pth.h b/Python/thread_pth.h index 3b97981ff9eb..8c7dbe925702 100644 --- a/Python/thread_pth.h +++ b/Python/thread_pth.h @@ -30,6 +30,8 @@ typedef struct { #define CHECK_STATUS(name) if (status == -1) { printf("%d ", status); perror(name); error = 1; } +pth_attr_t PyThread_attr; + /* * Initialization. */ @@ -37,6 +39,9 @@ typedef struct { static void PyThread__init_thread(void) { pth_init(); + PyThread_attr = pth_attr_new(); + pth_attr_set(PyThread_attr, PTH_ATTR_STACK_SIZE, 1<<18); + pth_attr_set(PyThread_attr, PTH_ATTR_JOINABLE, FALSE); } /* @@ -51,7 +56,7 @@ long PyThread_start_new_thread(void (*func)(void *), void *arg) if (!initialized) PyThread_init_thread(); - th = pth_spawn(PTH_ATTR_DEFAULT, + th = pth_spawn(PyThread_attr, (void* (*)(void *))func, (void *)arg );