summaryrefslogtreecommitdiff
path: root/debian/patches/dyson-qv4engine-getStackLimit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/dyson-qv4engine-getStackLimit.patch')
-rw-r--r--debian/patches/dyson-qv4engine-getStackLimit.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/debian/patches/dyson-qv4engine-getStackLimit.patch b/debian/patches/dyson-qv4engine-getStackLimit.patch
new file mode 100644
index 0000000..09b6006
--- /dev/null
+++ b/debian/patches/dyson-qv4engine-getStackLimit.patch
@@ -0,0 +1,30 @@
+Index: qtdeclarative-opensource-src-5.2.1/src/qml/jsruntime/qv4engine.cpp
+===================================================================
+--- qtdeclarative-opensource-src-5.2.1.orig/src/qml/jsruntime/qv4engine.cpp 2014-02-02 00:38:02.000000000 +0400
++++ qtdeclarative-opensource-src-5.2.1/src/qml/jsruntime/qv4engine.cpp 2014-04-27 09:34:20.425260667 +0400
+@@ -77,6 +77,10 @@
+ #if USE(PTHREADS)
+ # include <pthread.h>
+ # include <sys/resource.h>
++# if OS(SOLARIS)
++# include <thread.h>
++# include <errno.h>
++# endif
+ #endif
+
+ QT_BEGIN_NAMESPACE
+@@ -106,6 +110,14 @@
+ } else
+ size = pthread_get_stacksize_np(thread_self);
+ stackLimit -= size;
++# elif OS(SOLARIS)
++ stack_t ss;
++ int rc;
++ do {
++ rc = thr_stksegment(&ss); // can fail only with EAGAIN
++ } while ((rc != 0) && (errno == EAGAIN));
++ stackLimit = reinterpret_cast<quintptr>(ss.ss_sp);
++ stackLimit -= ss.ss_size;
+ # else
+ void* stackBottom = 0;
+ pthread_attr_t attr;