diff --git a/MagickCore/blob.c b/MagickCore/blob.c
index 7057742..8e973ba 100644
--- a/MagickCore/blob.c
+++ b/MagickCore/blob.c
@@ -2783,7 +2783,21 @@
       break;
     case StandardStream:
     {
-      count=read(fileno(image->blob->file_info.file),q,length);
+      register ssize_t
+        i;
+
+      for (i=0; i < (ssize_t) length; i+=count)
+      {
+        count=read(fileno(image->blob->file_info.file),q+i,(size_t) 
+          MagickMin(length-i,(MagickSizeType) SSIZE_MAX));
+        if (count <= 0)
+          {
+            count=0;
+            if (errno != EINTR)
+              break;
+          }
+      }
+      count=i;
       break;
     }
     case FileStream: