0.9.6.42:
[sbcl.git] / src / runtime / purify.c
index e6a8f39..eaa602e 100644 (file)
@@ -127,9 +127,15 @@ newspace_alloc(long nwords, int constantp)
     lispobj *ret;
     nwords=CEILING(nwords,2);
     if(constantp) {
+        if(read_only_free + nwords >= (lispobj *)READ_ONLY_SPACE_END) {
+            lose("Ran out of read-only space while purifying!");
+        }
         ret=read_only_free;
         read_only_free+=nwords;
     } else {
+        if(static_free + nwords >= (lispobj *)STATIC_SPACE_END) {
+            lose("Ran out of static space while purifying!");
+        }
         ret=static_free;
         static_free+=nwords;
     }
@@ -1485,9 +1491,8 @@ purify(lispobj static_roots, lispobj read_only_roots)
     printf(" handlers");
     fflush(stdout);
 #endif
-    pscav((lispobj *) all_threads->interrupt_data->interrupt_handlers,
-          sizeof(all_threads->interrupt_data->interrupt_handlers)
-          / sizeof(lispobj),
+    pscav((lispobj *) interrupt_handlers,
+          sizeof(interrupt_handlers) / sizeof(lispobj),
           0);
 
 #ifdef PRINTNOISE