51 lines
1.3 KiB
Diff
51 lines
1.3 KiB
Diff
|
http://bugs.gentoo.org/419563
|
||
|
http://bugs.gentoo.org/419971
|
||
|
|
||
|
See -gcc47-patch and -magic.patch in Fedora git:
|
||
|
|
||
|
http://pkgs.fedoraproject.org/gitweb/?p=libwvstreams.git;a=tree
|
||
|
|
||
|
--- include/wvtask.h
|
||
|
+++ include/wvtask.h
|
||
|
@@ -45,7 +45,8 @@
|
||
|
typedef void TaskFunc(void *userdata);
|
||
|
|
||
|
static int taskcount, numtasks, numrunning;
|
||
|
- int magic_number, *stack_magic;
|
||
|
+ int volatile magic_number;
|
||
|
+ int *stack_magic;
|
||
|
WvString name;
|
||
|
int tid;
|
||
|
|
||
|
@@ -84,7 +85,7 @@
|
||
|
static WvTaskMan *singleton;
|
||
|
static int links;
|
||
|
|
||
|
- static int magic_number;
|
||
|
+ static int volatile magic_number;
|
||
|
static WvTaskList all_tasks, free_tasks;
|
||
|
|
||
|
static void get_stack(WvTask &task, size_t size);
|
||
|
--- include/wvuid.h
|
||
|
+++ include/wvuid.h
|
||
|
@@ -7,6 +7,7 @@
|
||
|
#ifndef __WVUID_H
|
||
|
#define __WVUID_H
|
||
|
|
||
|
+#include <unistd.h>
|
||
|
#include "wvstring.h"
|
||
|
|
||
|
#if WIN32
|
||
|
--- utils/wvtask.cc
|
||
|
+++ utils/wvtask.cc
|
||
|
@@ -58,7 +58,8 @@
|
||
|
int WvTask::taskcount, WvTask::numtasks, WvTask::numrunning;
|
||
|
|
||
|
WvTaskMan *WvTaskMan::singleton;
|
||
|
-int WvTaskMan::links, WvTaskMan::magic_number;
|
||
|
+int WvTaskMan::links;
|
||
|
+int volatile WvTaskMan::magic_number;
|
||
|
WvTaskList WvTaskMan::all_tasks, WvTaskMan::free_tasks;
|
||
|
ucontext_t WvTaskMan::stackmaster_task, WvTaskMan::get_stack_return,
|
||
|
WvTaskMan::toplevel;
|