summaryrefslogtreecommitdiff
path: root/ext/Thread/Thread.xs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/Thread/Thread.xs')
-rw-r--r--ext/Thread/Thread.xs11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/Thread/Thread.xs b/ext/Thread/Thread.xs
index cb2e395051..b81ee26d9c 100644
--- a/ext/Thread/Thread.xs
+++ b/ext/Thread/Thread.xs
@@ -279,10 +279,19 @@ newthread (pTHX_ SV *startsv, AV *initargs, char *classname)
if (!attr_inited) {
attr_inited = 1;
err = pthread_attr_init(&attr);
+# ifdef THREAD_CREATE_NEEDS_STACK
+ if (err == 0)
+ err = pthread_attr_setstacksize(&attr, THREAD_CREATE_NEEDS_STACK);
+ if (err)
+ croak("panic: pthread_attr_setstacksize failed");
+#else
+ croak("panic: can't pthread_attr_setstacksize");
+# endif
# ifdef PTHREAD_ATTR_SETDETACHSTATE
if (err == 0)
err = PTHREAD_ATTR_SETDETACHSTATE(&attr, attr_joinable);
-
+ if (err)
+ croak("panic: pthread_attr_setdetachstate failed");
# else
croak("panic: can't pthread_attr_setdetachstate");
# endif