diff --git a/coders/bgr.c b/coders/bgr.c
index ed9b7ec..5a5b7b1 100644
--- a/coders/bgr.c
+++ b/coders/bgr.c
@@ -149,13 +149,9 @@
           image=DestroyImageList(image);
           return((Image *) NULL);
         }
-      for (i=0; i < image->offset; i++)
-        if (ReadBlobByte(image) == EOF)
-          {
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
-            break;
-          }
+      if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+          image->filename);
     }
   /*
     Create virtual canvas to support cropping (i.e. image.rgb[100x100+10+20]).
@@ -629,13 +625,9 @@
             image=DestroyImageList(image);
             return((Image *) NULL);
           }
-        for (i=0; i < image->offset; i++)
-          if (ReadBlobByte(image) == EOF)
-            {
-              ThrowFileException(exception,CorruptImageError,
-                "UnexpectedEndOfFile",image->filename);
-              break;
-            }
+        if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+          ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+            image->filename);
         length=GetQuantumExtent(canvas_image,quantum_info,BlueQuantum);
         for (i=0; i < (ssize_t) scene; i++)
           for (y=0; y < (ssize_t) image->extract_info.height; y++)
diff --git a/coders/cmyk.c b/coders/cmyk.c
index 31e223f..69b31e0 100644
--- a/coders/cmyk.c
+++ b/coders/cmyk.c
@@ -149,13 +149,9 @@
           image=DestroyImageList(image);
           return((Image *) NULL);
         }
-      for (i=0; i < image->offset; i++)
-        if (ReadBlobByte(image) == EOF)
-          {
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
-            break;
-          }
+      if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+          image->filename);
     }
   /*
     Create virtual canvas to support cropping (i.e. image.cmyk[100x100+10+20]).
@@ -701,13 +697,9 @@
             image=DestroyImageList(image);
             return((Image *) NULL);
           }
-        for (i=0; i < image->offset; i++)
-          if (ReadBlobByte(image) == EOF)
-            {
-              ThrowFileException(exception,CorruptImageError,
-                "UnexpectedEndOfFile",image->filename);
-              break;
-            }
+        if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+          ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+            image->filename);
         length=GetQuantumExtent(canvas_image,quantum_info,CyanQuantum);
         for (i=0; i < (ssize_t) scene; i++)
           for (y=0; y < (ssize_t) image->extract_info.height; y++)
diff --git a/coders/gray.c b/coders/gray.c
index db60438..c24980c 100644
--- a/coders/gray.c
+++ b/coders/gray.c
@@ -148,13 +148,9 @@
       image=DestroyImageList(image);
       return((Image *) NULL);
     }
-  for (i=0; i < image->offset; i++)
-    if (ReadBlobByte(image) == EOF)
-      {
-        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
-          image->filename);
-        break;
-      }
+  if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   /*
     Create virtual canvas to support cropping (i.e. image.gray[100x100+10+20]).
   */
diff --git a/coders/mono.c b/coders/mono.c
index 71edd7f..0915be9 100644
--- a/coders/mono.c
+++ b/coders/mono.c
@@ -140,13 +140,9 @@
       image=DestroyImageList(image);
       return((Image *) NULL);
     }
-  for (i=0; i < image->offset; i++)
-    if (ReadBlobByte(image) == EOF)
-      {
-        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
-          image->filename);
-        break;
-      }
+  if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   /*
     Initialize image colormap.
   */
diff --git a/coders/pes.c b/coders/pes.c
index 4a08c6c..81c32b9 100644
--- a/coders/pes.c
+++ b/coders/pes.c
@@ -493,9 +493,9 @@
     ThrowReaderException(CorruptImageError,"ImproperImageHeader");
   count=ReadBlob(image,4,version);
   offset=(int) ReadBlobLSBLong(image);
-  for (i=0; i < (offset+36); i++)
-    if (ReadBlobByte(image) == EOF)
-      break;
+  if (DiscardBlobBytes(image,offset+36) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   if (EOFBlob(image) != MagickFalse)
     ThrowReaderException(CorruptImageError,"UnexpectedEndOfFile");
   /*
@@ -510,9 +510,9 @@
   }
   for ( ; i < 256L; i++)
     blocks[i].offset=0;
-  for (i=0; i < (ssize_t) (532L-number_colors-21); i++)
-    if (ReadBlobByte(image) == EOF)
-      break;
+  if (DiscardBlobBytes(image,532L-number_colors-21) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   if (EOFBlob(image) != MagickFalse)
     ThrowReaderException(CorruptImageError,"UnexpectedEndOfFile");
   /*
diff --git a/coders/psd.c b/coders/psd.c
index 2877109..2b8ea3c 100644
--- a/coders/psd.c
+++ b/coders/psd.c
@@ -932,9 +932,12 @@
       length=ReadBlobMSBLong(image);
     }
   if ((image_info->number_scenes == 1) && (image_info->scene == 0))
-    if (DiscardBlobBytes(image,length) == MagickFalse)
-      ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
-        image->filename);
+    {
+      if (DiscardBlobBytes(image,length) == MagickFalse)
+        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+          image->filename);
+      length=0;
+    }
   if (length == 0)
     {
       if (image->debug != MagickFalse)
@@ -1065,19 +1068,15 @@
                     if (image->debug != MagickFalse)
                       (void) LogMagickEvent(CoderEvent,GetMagickModule(),
                         "      layer mask: offset(%.20g,%.20g), size(%.20g,%.20g), length=%.20g",
-                        (double) layer_info[i].mask.x,
-                        (double) layer_info[i].mask.y,
+                        (double) layer_info[i].mask.x,(double) layer_info[i].mask.y,
                         (double) layer_info[i].mask.width,(double)
                         layer_info[i].mask.height,(double) length-16);
                     /*
                       Skip over the rest of the layer mask information.
                     */
                     if (DiscardBlobBytes(image,length-16) == MagickFalse)
-                      {
-                        ThrowFileException(exception,CorruptImageError,
-                          "UnexpectedEndOfFile",image->filename);
-                        break;
-                      }
+                      ThrowFileException(exception,CorruptImageError,
+                        "UnexpectedEndOfFile",image->filename);
                   }
                 combinedlength+=length+4;  /* +4 for length */
                 length=ReadBlobMSBLong(image);
@@ -1160,11 +1159,8 @@
                     "      unsupported data: length=%.20g",(double)
                     (size-combinedlength));
                 if (DiscardBlobBytes(image,size-combinedlength) == MagickFalse)
-                  {
-                    ThrowFileException(exception,CorruptImageError,
-                      "UnexpectedEndOfFile",image->filename);
-                    break;
-                  }
+                  ThrowFileException(exception,CorruptImageError,
+                    "UnexpectedEndOfFile",image->filename);
               }
             /*
               Allocate layered image.
diff --git a/coders/raw.c b/coders/raw.c
index 7f59eef..b834aba 100644
--- a/coders/raw.c
+++ b/coders/raw.c
@@ -146,13 +146,9 @@
       image=DestroyImageList(image);
       return((Image *) NULL);
     }
-  for (i=0; i < image->offset; i++)
-    if (ReadBlobByte(image) == EOF)
-      {
-        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
-          image->filename);
-        break;
-      }
+  if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   /*
     Create virtual canvas to support cropping (i.e. image.gray[100x100+10+20]).
   */
diff --git a/coders/rgb.c b/coders/rgb.c
index 252b3ca..0ec26f2 100644
--- a/coders/rgb.c
+++ b/coders/rgb.c
@@ -149,13 +149,9 @@
           image=DestroyImageList(image);
           return((Image *) NULL);
         }
-      for (i=0; i < image->offset; i++)
-        if (ReadBlobByte(image) == EOF)
-          {
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
-            break;
-          }
+      if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+          image->filename);
     }
   /*
     Create virtual canvas to support cropping (i.e. image.rgb[100x100+10+20]).
@@ -636,13 +632,9 @@
             image=DestroyImageList(image);
             return((Image *) NULL);
           }
-        for (i=0; i < image->offset; i++)
-          if (ReadBlobByte(image) == EOF)
-            {
-              ThrowFileException(exception,CorruptImageError,
-                "UnexpectedEndOfFile",image->filename);
-              break;
-            }
+        if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+          ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+            image->filename);
         length=GetQuantumExtent(canvas_image,quantum_info,RedQuantum);
         for (i=0; i < (ssize_t) scene; i++)
           for (y=0; y < (ssize_t) image->extract_info.height; y++)
diff --git a/coders/uyvy.c b/coders/uyvy.c
index 0ac9253..8d1506d 100644
--- a/coders/uyvy.c
+++ b/coders/uyvy.c
@@ -139,13 +139,9 @@
   status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
   if (status == MagickFalse)
     return((Image *) NULL);
-  for (i=0; i < image->offset; i++)
-    if (ReadBlobByte(image) == EOF)
-      {
-        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
-          image->filename);
-        break;
-      }
+  if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   image->depth=8;
   if (image_info->ping != MagickFalse)
     {
diff --git a/coders/wbmp.c b/coders/wbmp.c
index 12366de..c94a9b5 100644
--- a/coders/wbmp.c
+++ b/coders/wbmp.c
@@ -175,13 +175,9 @@
     ThrowReaderException(CorruptImageError,"CorruptWBMPimage");
   if ((image->columns == 0) || (image->rows == 0))
     ThrowReaderException(CorruptImageError,"ImproperImageHeader");
-  for (i=0; i < image->offset; i++)
-    if (ReadBlobByte(image) == EOF)
-      {
-        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
-          image->filename);
-        break;
-      }
+  if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+    ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+      image->filename);
   if (AcquireImageColormap(image,2) == MagickFalse)
     ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
   if (image_info->ping != MagickFalse)
diff --git a/coders/xcf.c b/coders/xcf.c
index 4a78731..7e39de6 100644
--- a/coders/xcf.c
+++ b/coders/xcf.c
@@ -841,8 +841,9 @@
       break;
      case PROP_PARASITES:
      {
-        for (i=0; i < (ssize_t) prop_size; i++ )
-          (void) ReadBlobByte(image);
+       if (DiscardBlobBytes(image,prop_size) == MagickFalse)
+         ThrowFileException(&image->exception,CorruptImageError,
+           "UnexpectedEndOfFile",image->filename);
 
         /*
        ssize_t base = info->cp;
@@ -1069,8 +1070,9 @@
            by some Gimp versions.
         */
         size_t num_colours = ReadBlobMSBLong(image);
-        for (i=0; i < (ssize_t) (3L*num_colours); i++ )
-          (void) ReadBlobByte(image);
+        if (DiscardBlobBytes(image,3*num_colours) == MagickFalse)
+          ThrowFileException(&image->exception,CorruptImageError,
+            "UnexpectedEndOfFile",image->filename);
     /*
       if (info->file_version == 0)
       {
@@ -1116,10 +1118,9 @@
       case PROP_GUIDES:
       {
          /* just skip it - we don't care about guides */
-        for (i=0; i < (ssize_t) prop_size; i++ )
-          if (ReadBlobByte(image) == EOF)
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
+        if (DiscardBlobBytes(image,prop_size) == MagickFalse)
+          ThrowFileException(&image->exception,CorruptImageError,
+            "UnexpectedEndOfFile",image->filename);
       }
       break;
 
@@ -1157,11 +1158,9 @@
     case PROP_PARASITES:
       {
         /* BOGUS: we may need these for IPTC stuff */
-        for (i=0; i < (ssize_t) prop_size; i++ )
-          if (ReadBlobByte(image) == EOF)
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
-
+        if (DiscardBlobBytes(image,prop_size) == MagickFalse)
+          ThrowFileException(&image->exception,CorruptImageError,
+            "UnexpectedEndOfFile",image->filename);
         /*
       gssize_t         base = info->cp;
       GimpParasite *p;
@@ -1188,10 +1187,9 @@
     case PROP_PATHS:
       {
       /* BOGUS: just skip it for now */
-        for (i=0; i< (ssize_t) prop_size; i++ )
-          if (ReadBlobByte(image) == EOF)
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
+        if (DiscardBlobBytes(image,prop_size) == MagickFalse)
+          ThrowFileException(&image->exception,CorruptImageError,
+            "UnexpectedEndOfFile",image->filename);
 
         /*
       PathList *paths = xcf_load_bzpaths (gimage, info);
diff --git a/coders/ycbcr.c b/coders/ycbcr.c
index 6571699..ede8af1 100644
--- a/coders/ycbcr.c
+++ b/coders/ycbcr.c
@@ -158,13 +158,9 @@
           image=DestroyImageList(image);
           return((Image *) NULL);
         }
-      for (i=0; i < image->offset; i++)
-        if (ReadBlobByte(image) == EOF)
-          {
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
-            break;
-          }
+      if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+          image->filename);
     }
   /*
     Create virtual canvas to support cropping (i.e. image.rgb[100x100+10+20]).
@@ -555,13 +551,9 @@
             image=DestroyImageList(image);
             return((Image *) NULL);
           }
-        for (i=0; i < image->offset; i++)
-          if (ReadBlobByte(image) == EOF)
-            {
-              ThrowFileException(exception,CorruptImageError,
-                "UnexpectedEndOfFile",image->filename);
-              break;
-            }
+        if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+          ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+            image->filename);
         length=GetQuantumExtent(canvas_image,quantum_info,RedQuantum);
         for (i=0; i < (ssize_t) scene; i++)
           for (y=0; y < (ssize_t) image->extract_info.height; y++)
diff --git a/coders/yuv.c b/coders/yuv.c
index 5981305..7a46c6d 100644
--- a/coders/yuv.c
+++ b/coders/yuv.c
@@ -186,13 +186,9 @@
           image=DestroyImageList(image);
           return((Image *) NULL);
         }
-      for (i=0; i < image->offset; i++)
-        if (ReadBlobByte(image) == EOF)
-          {
-            ThrowFileException(exception,CorruptImageError,
-              "UnexpectedEndOfFile",image->filename);
-            break;
-          }
+      if (DiscardBlobBytes(image,image->offset) == MagickFalse)
+        ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile",
+          image->filename);
     }
   /*
     Allocate memory for a scanline.