fix bad initialization.
This commit is contained in:
parent
d76c2a0039
commit
90289b7188
11
C/threads.c
11
C/threads.c
|
@ -281,8 +281,13 @@ store_specs(int new_worker_id, UInt ssize, UInt tsize, UInt sysize, Term tgoal,
|
||||||
REMOTE_ThreadHandle(new_worker_id).tdetach =
|
REMOTE_ThreadHandle(new_worker_id).tdetach =
|
||||||
tdetach;
|
tdetach;
|
||||||
}
|
}
|
||||||
|
tmod = CurrentModule;
|
||||||
texit = Yap_StripModule(Deref(texit), &tmod);
|
texit = Yap_StripModule(Deref(texit), &tmod);
|
||||||
REMOTE_ThreadHandle(new_worker_id).texit_mod = tmod;
|
if (IsAtomTerm(tmod)) {
|
||||||
|
REMOTE_ThreadHandle(new_worker_id).texit_mod = tmod;
|
||||||
|
} else {
|
||||||
|
Yap_Error(TYPE_ERROR_ATOM,tmod,"module in exit call should be an atom");
|
||||||
|
}
|
||||||
REMOTE_ThreadHandle(new_worker_id).texit =
|
REMOTE_ThreadHandle(new_worker_id).texit =
|
||||||
Yap_StoreTermInDB(texit,7);
|
Yap_StoreTermInDB(texit,7);
|
||||||
REMOTE_ThreadHandle(new_worker_id).local_preds =
|
REMOTE_ThreadHandle(new_worker_id).local_preds =
|
||||||
|
@ -1141,13 +1146,12 @@ p_thread_atexit( USES_REGS1 )
|
||||||
{ /* '$thread_signal'(+P) */
|
{ /* '$thread_signal'(+P) */
|
||||||
Term t;
|
Term t;
|
||||||
|
|
||||||
if (!LOCAL_ThreadHandle.texit ||
|
if (LOCAL_ThreadHandle.texit == NULL ||
|
||||||
LOCAL_ThreadHandle.texit->Entry == MkAtomTerm(AtomTrue)) {
|
LOCAL_ThreadHandle.texit->Entry == MkAtomTerm(AtomTrue)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
do {
|
do {
|
||||||
t = Yap_PopTermFromDB(LOCAL_ThreadHandle.texit);
|
t = Yap_PopTermFromDB(LOCAL_ThreadHandle.texit);
|
||||||
LOCAL_ThreadHandle.texit = NULL;
|
|
||||||
if (t == 0) {
|
if (t == 0) {
|
||||||
if (LOCAL_Error_TYPE == OUT_OF_ATTVARS_ERROR) {
|
if (LOCAL_Error_TYPE == OUT_OF_ATTVARS_ERROR) {
|
||||||
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
||||||
|
@ -1166,6 +1170,7 @@ p_thread_atexit( USES_REGS1 )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while (t == 0);
|
} while (t == 0);
|
||||||
|
LOCAL_ThreadHandle.texit = NULL;
|
||||||
return Yap_unify(ARG1, t) && Yap_unify(ARG2, LOCAL_ThreadHandle.texit_mod);
|
return Yap_unify(ARG1, t) && Yap_unify(ARG2, LOCAL_ThreadHandle.texit_mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue