diff --git a/src/mapping.c b/src/mapping.c
index fafb1cf4ea861cdf2a89d7a87b8c72ef7b061ce1..8e020ae11e25d86388ed05165e13ce39f9e70b04 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.88 2000/07/03 16:50:09 mast Exp $");
+RCSID("$Id: mapping.c,v 1.89 2000/07/03 20:14:07 mast Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -1814,7 +1814,7 @@ void check_all_mappings(void)
 
 
 static void gc_recurse_weak_mapping(struct mapping *m,
-				    TYPE_FIELD (*recurse_fn)(struct svalue *, int))
+				    TYPE_FIELD (*recurse_fn)(struct svalue *, size_t))
 {
   INT32 e;
   struct keypair *k,**prev;
diff --git a/src/svalue.c b/src/svalue.c
index 660806f8a94a5f35308957f6f7c10ee7c8217723..28ad48b240df07de5eac8ba3431d8ea2657d6652 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -23,7 +23,7 @@
 #include "queue.h"
 #include "bignum.h"
 
-RCSID("$Id: svalue.c,v 1.79 2000/07/02 14:54:07 grubba Exp $");
+RCSID("$Id: svalue.c,v 1.80 2000/07/03 20:14:07 mast Exp $");
 
 struct svalue dest_ob_zero = { T_INT, 0 };
 
@@ -1225,9 +1225,10 @@ void debug_check_svalue(struct svalue *s)
 #endif
 
 #ifdef PIKE_DEBUG
-void real_gc_xmark_svalues(struct svalue *s, size_t num)
+/* NOTE: Must handle num being negative. */
+void real_gc_xmark_svalues(struct svalue *s, ptrdiff_t num)
 {
-  size_t e;
+  ptrdiff_t e;
 
   if (!s) {
     return;
diff --git a/src/svalue.h b/src/svalue.h
index e1034e3d92a7cdbdc94e3fc87e2805738cf78ba4..293dc1e338816b90d1141483323bcfaf33ae5bfb 100644
--- a/src/svalue.h
+++ b/src/svalue.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: svalue.h,v 1.58 2000/07/02 14:54:08 grubba Exp $
+ * $Id: svalue.h,v 1.59 2000/07/03 20:14:08 mast Exp $
  */
 #ifndef SVALUE_H
 #define SVALUE_H
@@ -374,7 +374,7 @@ void copy_svalues_recursively_no_free(struct svalue *to,
 				      struct processing *p);
 void check_short_svalue(union anything *u, TYPE_T type);
 void debug_check_svalue(struct svalue *s);
-void real_gc_xmark_svalues(struct svalue *s, size_t num);
+void real_gc_xmark_svalues(struct svalue *s, ptrdiff_t num);
 TYPE_FIELD real_gc_check_svalues(struct svalue *s, size_t num);
 void real_gc_check_short_svalue(union anything *u, TYPE_T type);
 TYPE_FIELD gc_check_weak_svalues(struct svalue *s, size_t num);