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: