From 469fab876df80fbc34d64167677e91af31902789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa=20II?= Date: Fri, 9 Apr 2010 18:08:08 +0100 Subject: [PATCH] keep on working even after an overflow. --- C/globals.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/C/globals.c b/C/globals.c index 33e8912d2..dba194e88 100644 --- a/C/globals.c +++ b/C/globals.c @@ -1785,9 +1785,12 @@ p_nb_heap_add_to_heap(void) if (arena == 0L) return FALSE; mingrow = garena_overflow_size(ArenaPt(arena)); - key = CopyTermToArena(ARG2, arena, FALSE, TRUE, 3, qd+HEAP_ARENA, mingrow); + ARG2 = CopyTermToArena(ARG2, arena, FALSE, TRUE, 3, qd+HEAP_ARENA, mingrow); + qd = GetHeap(ARG1,"add_to_heap"); arena = qd[HEAP_ARENA]; to = CopyTermToArena(ARG3, arena, FALSE, TRUE, 3, qd+HEAP_ARENA, mingrow); + /* protect key in ARG2 in case there is an overflow while copying to */ + key = ARG2; if (key == 0 || to == 0L) return FALSE; qd = GetHeap(ARG1,"add_to_heap");