fix bad initialization in signals

This commit is contained in:
Vítor Santos Costa 2014-03-08 00:03:58 +00:00
parent 7e85bfd4a4
commit 233c4ee903
2 changed files with 4 additions and 5 deletions

View File

@ -71,7 +71,6 @@ do_signal(int wid, yap_signals sig USES_REGS)
REMOTE_LastActiveSignal(wid) = 0; REMOTE_LastActiveSignal(wid) = 0;
UNLOCK(REMOTE_SignalLock(wid)); UNLOCK(REMOTE_SignalLock(wid));
#else #else
LOCK(LOCAL_SignalLock);
if (!LOCAL_InterruptsDisabled) { if (!LOCAL_InterruptsDisabled) {
Yap_regp->CreepFlag_ = Yap_regp->CreepFlag_ =
Unsigned(Yap_regp->LCL0_); Unsigned(Yap_regp->LCL0_);
@ -83,7 +82,6 @@ do_signal(int wid, yap_signals sig USES_REGS)
if (LOCAL_FirstActiveSignal != LOCAL_LastActiveSignal) { if (LOCAL_FirstActiveSignal != LOCAL_LastActiveSignal) {
do { do {
if (sig == LOCAL_ActiveSignals[i]) { if (sig == LOCAL_ActiveSignals[i]) {
UNLOCK(LOCAL_SignalLock);
return; return;
} }
i++; i++;
@ -95,7 +93,6 @@ do_signal(int wid, yap_signals sig USES_REGS)
LOCAL_LastActiveSignal++; LOCAL_LastActiveSignal++;
if (LOCAL_LastActiveSignal == LOCAL_MaxActiveSignals) if (LOCAL_LastActiveSignal == LOCAL_MaxActiveSignals)
LOCAL_LastActiveSignal = 0; LOCAL_LastActiveSignal = 0;
UNLOCK(LOCAL_SignalLock);
#endif #endif
} }
@ -424,7 +421,8 @@ Yap_InitSignalCPreds(void)
#endif #endif
} }
void Yap_InitSignals(int wid) void *Yap_InitSignals(int wid)
{ {
REMOTE_ActiveSignals(wid) = (UInt *)malloc(sizeof(UInt)*REMOTE_MaxActiveSignals(wid)); void *ptr = (void *)malloc(sizeof(UInt)*REMOTE_MaxActiveSignals(wid));
return ptr;
} }

View File

@ -333,6 +333,7 @@ void Yap_InitSavePreds(void);
/* signals.c */ /* signals.c */
void Yap_InitSignalCPreds(void); void Yap_InitSignalCPreds(void);
void *Yap_InitSignals(int wid);
/* sort.c */ /* sort.c */
void Yap_InitSortPreds(void); void Yap_InitSortPreds(void);