diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index d45c1a3..92ec430 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -551,13 +551,11 @@
     count=pread(cache_info->file,buffer+i,(size_t) MagickMin(length-i,
       (MagickSizeType) SSIZE_MAX),(off_t) (offset+i));
 #endif
-    if (count > 0)
-      continue;
-    count=0;
-    if (errno != EINTR)
+    if (count <= 0)
       {
-        i=(-1);
-        break;
+        count=0;
+        if (errno != EINTR)
+          break;
       }
   }
 #if !defined(MAGICKCORE_HAVE_PREAD)
@@ -594,13 +592,11 @@
     count=pwrite(cache_info->file,buffer+i,(size_t) MagickMin(length-i,
       (MagickSizeType) SSIZE_MAX),(off_t) (offset+i));
 #endif
-    if (count > 0)
-      continue;
-    count=0;
-    if (errno != EINTR)
+    if (count <= 0)
       {
-        i=(-1);
-        break;
+        count=0;
+        if (errno != EINTR)
+          break;
       }
   }
 #if !defined(MAGICKCORE_HAVE_PWRITE)