--- /dev/null
+--- ../../build/qalc/cache/libqalculate-0.9.9/libqalculate/Calculator.cc 2016-07-16 14:49:15.000000000 +0200
++++ ./libqalculate/Calculator.cc 2016-08-15 00:21:11.338822562 +0200
+@@ -203,8 +203,8 @@
+ }
+
+ void *calculate_proc(void *pipe) {
+- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
+- pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
++ //pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
++ //pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+ FILE *calculate_pipe = (FILE*) pipe;
+ while(true) {
+ bool b_parse = true;
+@@ -1616,7 +1616,7 @@
+ if(calculate_thread_stopped) {
+ b_busy = false;
+ } else {
+- pthread_cancel(calculate_thread);
++ pthread_kill(calculate_thread, 0);
+ restoreState();
+ stopped_messages_count.clear();
+ stopped_warnings_count.clear();
+@@ -1640,14 +1640,14 @@
+ tmp_rpn_mstruct = NULL;
+ b_busy = false;
+ calculate_thread_stopped = true;
+- pthread_exit(/* Solaris 2.6 needs a cast */ (void*) PTHREAD_CANCELED);
++ pthread_exit(0);
+ }
+ bool Calculator::busy() {
+ return b_busy;
+ }
+ void Calculator::terminateThreads() {
+ if(!calculate_thread_stopped) {
+- pthread_cancel(calculate_thread);
++ pthread_kill(calculate_thread, 0);
+ }
+ }
+