Index: /branches/working-0711/ccl/lisp-kernel/image.c
===================================================================
--- /branches/working-0711/ccl/lisp-kernel/image.c	(revision 13187)
+++ /branches/working-0711/ccl/lisp-kernel/image.c	(revision 13188)
@@ -65,6 +65,8 @@
         int skip = ((int) start[1])+1;
 #else
-        int skip = ((unsigned short)start[1])+1;
         extern void update_self_references(LispObj *);
+        extern natural imm_word_count(LispObj);
+
+        natural skip = (natural)imm_word_count(((LispObj)start)+fulltag_misc)+1;
         update_self_references(start);
 #endif
@@ -91,4 +93,7 @@
       ++start;
     }
+  }
+  if (start > end) {
+    Bug(NULL, "Overran area bounds in relocate_area_contents");
   }
 }
Index: /branches/working-0711/ccl/lisp-kernel/x86-gc.c
===================================================================
--- /branches/working-0711/ccl/lisp-kernel/x86-gc.c	(revision 13187)
+++ /branches/working-0711/ccl/lisp-kernel/x86-gc.c	(revision 13188)
@@ -28,5 +28,5 @@
 
 #ifdef X8632
-static inline natural
+inline natural
 imm_word_count(LispObj fn)
 {
