fixes to interrupt handling in readline.
This commit is contained in:
parent
a701f08180
commit
991d85edf0
@ -1677,7 +1677,6 @@ YAP_ExecuteOnCut(PredEntry *pe, CPredicate exec_code, struct cut_c_str *top)
|
|||||||
if (pe->PredFlags & CArgsPredFlag) {
|
if (pe->PredFlags & CArgsPredFlag) {
|
||||||
val = execute_cargs_back(pe, exec_code, ctx PASS_REGS);
|
val = execute_cargs_back(pe, exec_code, ctx PASS_REGS);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,"ctx=%p\n",ctx);
|
|
||||||
val = ((codev)(args-LCL0,0,ctx));
|
val = ((codev)(args-LCL0,0,ctx));
|
||||||
}
|
}
|
||||||
/* make sure we clean up the frames left by the user */
|
/* make sure we clean up the frames left by the user */
|
||||||
@ -2831,6 +2830,7 @@ YAP_Init(YAP_init_args *yap_init)
|
|||||||
Yap_init_yapor_global_local_memory();
|
Yap_init_yapor_global_local_memory();
|
||||||
LOCAL = REMOTE(0);
|
LOCAL = REMOTE(0);
|
||||||
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA */
|
#endif /* YAPOR_COPY || YAPOR_COW || YAPOR_SBA */
|
||||||
|
GLOBAL_PrologShouldHandleInterrupts = yap_init->PrologShouldHandleInterrupts;
|
||||||
Yap_InitSysbits(); /* init signal handling and time, required by later functions */
|
Yap_InitSysbits(); /* init signal handling and time, required by later functions */
|
||||||
GLOBAL_argv = yap_init->Argv;
|
GLOBAL_argv = yap_init->Argv;
|
||||||
GLOBAL_argc = yap_init->Argc;
|
GLOBAL_argc = yap_init->Argc;
|
||||||
@ -2878,7 +2878,6 @@ YAP_Init(YAP_init_args *yap_init)
|
|||||||
} else {
|
} else {
|
||||||
Heap = yap_init->HeapSize;
|
Heap = yap_init->HeapSize;
|
||||||
}
|
}
|
||||||
GLOBAL_PrologShouldHandleInterrupts = yap_init->PrologShouldHandleInterrupts;
|
|
||||||
Yap_InitWorkspace(Heap, Stack, Trail, Atts,
|
Yap_InitWorkspace(Heap, Stack, Trail, Atts,
|
||||||
yap_init->MaxTableSpaceSize,
|
yap_init->MaxTableSpaceSize,
|
||||||
yap_init->NumberWorkers,
|
yap_init->NumberWorkers,
|
||||||
|
4
C/exec.c
4
C/exec.c
@ -961,7 +961,7 @@ exec_absmi(int top USES_REGS)
|
|||||||
restore_H();
|
restore_H();
|
||||||
/* set stack */
|
/* set stack */
|
||||||
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
ASP = (CELL *)PROTECT_FROZEN_B(B);
|
||||||
Yap_StartSlots( PASS_REGS1 );
|
Yap_PopSlots();
|
||||||
LOCK(LOCAL_SignalLock);
|
LOCK(LOCAL_SignalLock);
|
||||||
/* forget any signals active, we're reborne */
|
/* forget any signals active, we're reborne */
|
||||||
LOCAL_ActiveSignals = 0;
|
LOCAL_ActiveSignals = 0;
|
||||||
@ -991,9 +991,9 @@ exec_absmi(int top USES_REGS)
|
|||||||
LOCAL_PrologMode = UserMode;
|
LOCAL_PrologMode = UserMode;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Yap_CloseSlots( PASS_REGS1 );
|
||||||
LOCAL_PrologMode = UserMode;
|
LOCAL_PrologMode = UserMode;
|
||||||
}
|
}
|
||||||
Yap_CloseSlots( PASS_REGS1 );
|
|
||||||
YENV = ASP;
|
YENV = ASP;
|
||||||
YENV[E_CB] = Unsigned (B);
|
YENV[E_CB] = Unsigned (B);
|
||||||
out = Yap_absmi(0);
|
out = Yap_absmi(0);
|
||||||
|
Reference in New Issue
Block a user