summaryrefslogtreecommitdiff
path: root/thread.h
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1997-11-08 15:03:39 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1997-11-08 15:03:39 +0000
commit0b9678a8abcf790b88babcb35eec34072787a87f (patch)
treed50c10d5faf510d03b1fa735abc8709d93020f8b /thread.h
parent5ddb6eab5b331747cc6c97d7afbea3b5a48d2c4d (diff)
downloadperl-0b9678a8abcf790b88babcb35eec34072787a87f.tar.gz
Get threads working again on Win32
Root cause of fail was init_thread_intern() in new_struct_thread() (which is called in parent thread) clobbering dTHR of parent thread. It is doubtfull if setting 'self' in new_struct_thread() is 'right' but left in for now. p4raw-id: //depot/ansiperl@213
Diffstat (limited to 'thread.h')
-rw-r--r--thread.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/thread.h b/thread.h
index 2ee4f518f6..f18b38b797 100644
--- a/thread.h
+++ b/thread.h
@@ -128,6 +128,7 @@ struct thread *getTHR _((void));
# endif
#endif
+
#ifndef THREAD_RET_TYPE
# define THREAD_RET_TYPE void *
# define THREAD_RET_CAST(p) ((void *)(p))
@@ -223,7 +224,7 @@ struct thread {
perl_mutex mutex; /* For the fields others can change */
U32 tid;
struct thread *next, *prev; /* Circular linked list of threads */
-
+ JMPENV Tstart_env; /* Top of top_env longjmp() chain */
#ifdef ADD_THREAD_INTERN
struct thread_intern i; /* Platform-dependent internals */
#endif
@@ -306,6 +307,7 @@ typedef struct condpair {
#undef chopset
#undef formtarget
#undef bodytarget
+#undef start_env
#undef toptarget
#undef top_env
#undef runlevel
@@ -381,6 +383,7 @@ typedef struct condpair {
#define top_env (thr->Ttop_env)
#define runlevel (thr->Trunlevel)
+#define start_env (thr->Tstart_env)
#else
/* USE_THREADS is not defined */