Index: /trunk/source/lisp-kernel/gc-common.c
===================================================================
--- /trunk/source/lisp-kernel/gc-common.c	(revision 13953)
+++ /trunk/source/lisp-kernel/gc-common.c	(revision 13954)
@@ -1365,5 +1365,5 @@
     pkg = 0,
     itabvec = 0;
-  BytePtr oldfree = a->active;
+  BytePtr oldfree = a->active, last_zeroed_addr;
   TCR *other_tcr;
   natural static_dnodes;
@@ -1678,8 +1678,14 @@
     }
 
-    zero_memory_range(a->active, oldfree);
 
     resize_dynamic_heap(a->active,
                         (GCephemeral_low == 0) ? lisp_heap_gc_threshold : 0);
+
+    if (oldfree < a->high) {
+      last_zeroed_addr = oldfree;
+    } else {
+      last_zeroed_addr = a->high;
+    }
+    zero_memory_range(a->active, last_zeroed_addr);
 
     /*
Index: /trunk/source/lisp-kernel/pmcl-kernel.c
===================================================================
--- /trunk/source/lisp-kernel/pmcl-kernel.c	(revision 13953)
+++ /trunk/source/lisp-kernel/pmcl-kernel.c	(revision 13954)
@@ -448,8 +448,9 @@
 {
   if (len != 0) {
-    if (CommitMemory(start, len)) {
-      if (touch_all_pages(start, len)) {
-	return true;
-      }
+    if (!CommitMemory(start, len)) {
+      return false;
+    }
+    if (!touch_all_pages(start, len)) {
+      return false;
     }
   }
