diff --git a/magick/blob.c b/magick/blob.c
index 8316d30..e767965 100644
--- a/magick/blob.c
+++ b/magick/blob.c
@@ -269,8 +269,8 @@
           break;
       }
   }
-  file=close(file)-1;
-  if (i < length)
+  file=close(file);
+  if ((file == -1) || (i < length))
     {
       ThrowFileException(exception,BlobError,"UnableToWriteBlob",filename);
       return(MagickFalse);
@@ -868,13 +868,19 @@
         if ((size_t) (i+count) >= extent)
           break;
       }
-      file=close(file)-1;
+      file=close(file);
       if (blob == (unsigned char *) NULL)
         {
           (void) ThrowMagickException(exception,GetMagickModule(),
             ResourceLimitError,"MemoryAllocationFailed","`%s'",filename);
           return((unsigned char *) NULL);
         }
+      if (file == -1)
+        {
+          blob=(unsigned char *) RelinquishMagickMemory(blob);
+          ThrowFileException(exception,BlobError,"UnableToReadBlob",filename);
+          return((unsigned char *) NULL);
+        }
       *length=MagickMin(i+count,extent);
       blob[*length]='\0';
       return(blob);
@@ -919,8 +925,13 @@
           return((unsigned char *) NULL);
         }
     }
-  file=close(file)-1;
   blob[*length]='\0';
+  file=close(file);
+  if (file == -1)
+    {
+      blob=(unsigned char *) RelinquishMagickMemory(blob);
+      ThrowFileException(exception,BlobError,"UnableToReadBlob",filename);
+    }
   return(blob);
 }
 
@@ -1036,7 +1047,10 @@
         break;
       }
   }
-  file=close(file)-1;
+  file=close(file);
+  if (file == -1)
+    ThrowFileException(&image->exception,BlobError,"UnableToWriteBlob",
+      filename);
   blob=(unsigned char *) RelinquishMagickMemory(blob);
   return(MagickTrue);
 }
@@ -1568,9 +1582,9 @@
     if (i < length)
       break;
   }
-  file=close(file)-1;
+  file=close(file);
   buffer=(unsigned char *) RelinquishMagickMemory(buffer);
-  if (i < length)
+  if ((file == -1) || (i < length))
     {
       ThrowFileException(exception,BlobError,"UnableToWriteBlob",filename);
       return(MagickFalse);
@@ -1870,7 +1884,9 @@
     status=WriteBlobStream(image,(size_t) count,buffer) == count ? MagickTrue :
       MagickFalse;
   }
-  file=close(file)-1;
+  file=close(file);
+  if (file == -1)
+    ThrowFileException(exception,FileOpenError,"UnableToWriteBlob",filename);
   (void) RelinquishUniqueFileResource(filename);
   buffer=(unsigned char *) RelinquishMagickMemory(buffer);
   return(status);
diff --git a/magick/magic.c b/magick/magic.c
index 7dab509..9ce446b 100644
--- a/magick/magic.c
+++ b/magick/magic.c
@@ -132,6 +132,7 @@
     { "JPEG", 0, MagickString("\377\330\377") },
     { "JPC", 0, MagickString("\377\117") },
     { "JP2", 4, MagickString("\152\120\040\040\015") },
+    { "MAT", 0, MagickString("MATLAB 5.0 MAT-file,") },
     { "MIFF", 0, MagickString("Id=ImageMagick") },
     { "MIFF", 0, MagickString("id=ImageMagick") },
     { "MNG", 0, MagickString("\212MNG\r\n\032\n") },
diff --git a/magick/version.h b/magick/version.h
index f5c1ab2..55721b8 100644
--- a/magick/version.h
+++ b/magick/version.h
@@ -30,10 +30,10 @@
 #define MagickLibVersion  0x662
 #define MagickLibVersionText  "6.6.2"
 #define MagickLibVersionNumber  3,0,0
-#define MagickLibAddendum  "-8"
+#define MagickLibAddendum  "-9"
 #define MagickLibInterface  3
 #define MagickLibMinInterface  3
-#define MagickReleaseDate  "2010-06-22"
+#define MagickReleaseDate  "2010-06-25"
 #define MagickChangeDate   "20100622"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #define MagickHomeURL  "file:///usr/local/share/doc/ImageMagick-6.6.2/index.html"