diff --git a/src/array.c b/src/array.c
index 0c202d42366d1084266d2a15614a5c953ec5d87a..112b235382b46dba8cc848d035340a10581c50cb 100644
--- a/src/array.c
+++ b/src/array.c
@@ -2052,7 +2052,7 @@ static struct array *subtract_array_svalue(struct array *a, struct svalue *b)
   if( a->refs > 1 )
   {
     /* We only need to do anything if the value exists in the array. */
-    ssize_t off  = fast_array_search( a, b, 0 );
+    ptrdiff_t off  = fast_array_search( a, b, 0 );
     TYPE_FIELD tmp;
 
     if( off == -1 )
diff --git a/src/stralloc.c b/src/stralloc.c
index 0866f05bbf364094ffb0f5fd9b40c5dd460eb794..82a805e2d344472d31b70400c63a5e9d83c2126c 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -128,7 +128,7 @@ PMOD_EXPORT void check_string_range( struct pike_string *str,
 {
   INT32 s_min = MAX_INT32;
   INT32 s_max = MIN_INT32;
-  ssize_t i;
+  ptrdiff_t i;
 
   if( loose || ((str->flags & STRING_CONTENT_CHECKED ) && (!str->size_shift || !max)) )
   {