try resetting obvioulsy bad handles

This commit is contained in:
Vitor Santos Costa 2016-10-16 13:13:34 -05:00
parent 5c33960535
commit 3b124549e4

View File

@ -463,7 +463,13 @@ push_registers(Int num_regs, yamop *nextop USES_REGS)
while (curslot < topslot) { while (curslot < topslot) {
// printf("%p <- %p\n", TR, topslot); // printf("%p <- %p\n", TR, topslot);
ret = check_pr_trail(ret PASS_REGS); ret = check_pr_trail(ret PASS_REGS);
TrailTerm(TR++) = *curslot++; if (!IsVarTerm(*curslot) &&
(
(*curslot < (CELL)LOCAL_GlobalBase &&
*curslot > (CELL)HR))) {
*curslot++ = TermNil;
}
TrailTerm(TR++) = (CELL)curslot++;
} }
} }
for (i = 1; i <= num_regs; i++) { for (i = 1; i <= num_regs; i++) {
@ -573,6 +579,7 @@ pop_registers(Int num_regs, yamop *nextop USES_REGS)
while (curslot < topslot) { while (curslot < topslot) {
*curslot++ = TrailTerm(ptr++); *curslot++ = TrailTerm(ptr++);
} }
} }
for (i = 1; i <= num_regs; i++) for (i = 1; i <= num_regs; i++)
@ -1193,7 +1200,7 @@ mark_variable(CELL_PTR current USES_REGS)
char *local_bp = LOCAL_bp; char *local_bp = LOCAL_bp;
begin: begin:
if (UNMARKED_MARK(current,local_bp)) { if (current == 0 || UNMARKED_MARK(current,local_bp)) {
POP_CONTINUATION(); POP_CONTINUATION();
} }
if (current >= H0 && current < HR) { if (current >= H0 && current < HR) {