fix bad overflow handling.
This commit is contained in:
parent
9ab6f7ad36
commit
26dc567a0f
@ -839,6 +839,7 @@ sort_group(GroupDef *grp, CELL *top, struct intermediates *cint)
|
|||||||
base = top;
|
base = top;
|
||||||
while (top+2*max > (CELL *)Yap_TrailTop) {
|
while (top+2*max > (CELL *)Yap_TrailTop) {
|
||||||
if (!Yap_growtrail(2*max*CellSize, TRUE)) {
|
if (!Yap_growtrail(2*max*CellSize, TRUE)) {
|
||||||
|
Yap_Error_Size = 2*max*CellSize;
|
||||||
save_machine_regs();
|
save_machine_regs();
|
||||||
siglongjmp(cint->CompilerBotch,4);
|
siglongjmp(cint->CompilerBotch,4);
|
||||||
return;
|
return;
|
||||||
@ -2066,6 +2067,7 @@ groups_in(ClauseDef *min, ClauseDef *max, GroupDef *grp, struct intermediates *c
|
|||||||
siglongjmp(cint->CompilerBotch,4);
|
siglongjmp(cint->CompilerBotch,4);
|
||||||
#else
|
#else
|
||||||
if (!Yap_growtrail(sz, TRUE)) {
|
if (!Yap_growtrail(sz, TRUE)) {
|
||||||
|
Yap_Error_Size = sz;
|
||||||
save_machine_regs();
|
save_machine_regs();
|
||||||
siglongjmp(cint->CompilerBotch,4);
|
siglongjmp(cint->CompilerBotch,4);
|
||||||
return 0;
|
return 0;
|
||||||
@ -2194,6 +2196,7 @@ emit_switch_space(UInt n, UInt item_size, struct intermediates *cint, CELL func_
|
|||||||
UInt sz = sizeof(LogUpdIndex)+n*item_size;
|
UInt sz = sizeof(LogUpdIndex)+n*item_size;
|
||||||
LogUpdIndex *cl = (LogUpdIndex *)Yap_AllocCodeSpace(sz);
|
LogUpdIndex *cl = (LogUpdIndex *)Yap_AllocCodeSpace(sz);
|
||||||
if (cl == NULL) {
|
if (cl == NULL) {
|
||||||
|
Yap_Error_Size = sz;
|
||||||
/* grow stack */
|
/* grow stack */
|
||||||
save_machine_regs();
|
save_machine_regs();
|
||||||
siglongjmp(cint->CompilerBotch,2);
|
siglongjmp(cint->CompilerBotch,2);
|
||||||
@ -2214,6 +2217,7 @@ emit_switch_space(UInt n, UInt item_size, struct intermediates *cint, CELL func_
|
|||||||
UInt sz = sizeof(StaticIndex)+n*item_size;
|
UInt sz = sizeof(StaticIndex)+n*item_size;
|
||||||
StaticIndex *cl = (StaticIndex *)Yap_AllocCodeSpace(sz);
|
StaticIndex *cl = (StaticIndex *)Yap_AllocCodeSpace(sz);
|
||||||
if (cl == NULL) {
|
if (cl == NULL) {
|
||||||
|
Yap_Error_Size = sz;
|
||||||
/* grow stack */
|
/* grow stack */
|
||||||
save_machine_regs();
|
save_machine_regs();
|
||||||
siglongjmp(cint->CompilerBotch,2);
|
siglongjmp(cint->CompilerBotch,2);
|
||||||
|
Reference in New Issue
Block a user