]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 11 Apr 2015 12:43:09 +0000 (12:43 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 11 Apr 2015 12:43:09 +0000 (12:43 +0000)
MagickCore/blob.c

index c788bf58c7cd7e530940fd7fa7d06cfe43a050f8..379b9e04b6d676bf08d2dbf18244d24498f50c2f 100644 (file)
@@ -2812,24 +2812,6 @@ MagickExport ssize_t ReadBlob(Image *image,const size_t length,void *data)
     case UndefinedStream:
       break;
     case StandardStream:
-    {
-      register ssize_t
-        i;
-
-      for (i=0; i < (ssize_t) length; i+=count)
-      {
-        count=read(fileno(image->blob->file_info.file),q+i,MagickMin(length-i,
-          (size_t) SSIZE_MAX));
-        if (count <= 0)
-          {
-            count=0;
-            if (errno != EINTR)
-              break;
-          }
-      }
-      count=i;
-      break;
-    }
     case FileStream:
     case PipeStream:
     {
@@ -2840,6 +2822,22 @@ MagickExport ssize_t ReadBlob(Image *image,const size_t length,void *data)
           count=(ssize_t) fread(q,1,length,image->blob->file_info.file);
           break;
         }
+        case 4:
+        {
+          c=getc(image->blob->file_info.file);
+          if (c == EOF)
+            break;
+          *q++=(unsigned char) c;
+          count++;
+        }
+        case 3:
+        {
+          c=getc(image->blob->file_info.file);
+          if (c == EOF)
+            break;
+          *q++=(unsigned char) c;
+          count++;
+        }
         case 2:
         {
           c=getc(image->blob->file_info.file);
@@ -2872,6 +2870,22 @@ MagickExport ssize_t ReadBlob(Image *image,const size_t length,void *data)
             (unsigned int) length);
           break;
         }
+        case 4:
+        {
+          c=gzgetc(image->blob->file_info.gzfile);
+          if (c == EOF)
+            break;
+          *q++=(unsigned char) c;
+          count++;
+        }
+        case 3:
+        {
+          c=gzgetc(image->blob->file_info.gzfile);
+          if (c == EOF)
+            break;
+          *q++=(unsigned char) c;
+          count++;
+        }
         case 2:
         {
           c=gzgetc(image->blob->file_info.gzfile);