]> granicus.if.org Git - imagemagick/commitdiff
Track pixel cache on disk mode (read, write, I/O)
authorCristy <urban-warrior@imagemagick.org>
Sat, 23 Dec 2017 20:15:22 +0000 (15:15 -0500)
committerCristy <urban-warrior@imagemagick.org>
Sat, 23 Dec 2017 20:15:22 +0000 (15:15 -0500)
MagickCore/cache-private.h
MagickCore/cache.c
MagickCore/pixel.c

index 8ba95adbe29bea0311be1ff621af63cf29dae71d..556bb75ba60d9a2ddf0015546758b39d779d35c7 100644 (file)
@@ -156,7 +156,8 @@ typedef struct _CacheInfo
     type;
 
   MapMode
-    mode;
+    mode,
+    disk_mode;
 
   MagickBooleanType
     mapped;
index ac0297336122b2feede9d4f436bdc5b6cf5a2e03..6ab65a6370c983490c5d242c0c4d243449ce7952 100644 (file)
@@ -193,6 +193,7 @@ MagickPrivate Cache AcquirePixelCache(const size_t number_threads)
   (void) ResetMagickMemory(cache_info,0,sizeof(*cache_info));
   cache_info->type=UndefinedCache;
   cache_info->mode=IOMode;
+  cache_info->disk_mode=IOMode;
   cache_info->colorspace=sRGBColorspace;
   cache_info->file=(-1);
   cache_info->id=GetMagickThreadId();
@@ -3301,7 +3302,7 @@ static MagickBooleanType OpenPixelCacheOnDisk(CacheInfo *cache_info,
   /*
     Open pixel cache on disk.
   */
-  if ((cache_info->file != -1) && (cache_info->mode == mode))
+  if ((cache_info->file != -1) && (cache_info->disk_mode == mode))
     return(MagickTrue);  /* cache already open and in the proper mode */
   if (*cache_info->cache_filename == '\0')
     file=AcquireUniqueFileResource(cache_info->cache_filename);
@@ -3337,6 +3338,7 @@ static MagickBooleanType OpenPixelCacheOnDisk(CacheInfo *cache_info,
   if (cache_info->file != -1)
     (void) ClosePixelCacheOnDisk(cache_info);
   cache_info->file=file;
+  cache_info->disk_mode=mode;
   return(MagickTrue);
 }
 
index 345622cf7d156970e919eb912f28eea1455d181d..919e4510d3a0d3519cabc490d9465148e9ea4fef 100644 (file)
@@ -506,9 +506,9 @@ MagickExport MagickRealType EncodePixelGamma(const MagickRealType pixel)
 %
 */
 
-static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportCharPixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -541,7 +541,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -559,7 +559,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -577,7 +577,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -592,7 +592,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -609,7 +609,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -627,7 +627,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -645,7 +645,7 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -710,11 +710,12 @@ static void ExportCharPixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportDoublePixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -747,7 +748,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -765,7 +766,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -783,7 +784,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -798,7 +799,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -815,7 +816,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -833,7 +834,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -851,7 +852,7 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -917,11 +918,12 @@ static void ExportDoublePixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportFloatPixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -954,7 +956,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -972,7 +974,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -990,7 +992,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -1005,7 +1007,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -1022,7 +1024,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -1040,7 +1042,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -1058,7 +1060,7 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -1123,11 +1125,12 @@ static void ExportFloatPixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportLongPixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -1160,7 +1163,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -1178,7 +1181,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -1196,7 +1199,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -1211,7 +1214,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -1228,7 +1231,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -1246,7 +1249,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -1264,7 +1267,7 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -1329,11 +1332,12 @@ static void ExportLongPixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportLongLongPixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -1366,7 +1370,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -1384,7 +1388,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -1402,7 +1406,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -1418,7 +1422,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -1435,7 +1439,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -1453,7 +1457,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -1471,7 +1475,7 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -1537,11 +1541,12 @@ static void ExportLongLongPixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportQuantumPixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -1574,7 +1579,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -1592,7 +1597,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -1610,7 +1615,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -1625,7 +1630,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -1642,7 +1647,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -1660,7 +1665,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -1678,7 +1683,7 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -1746,11 +1751,12 @@ static void ExportQuantumPixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,void *pixels,
-  ExceptionInfo *exception)
+static MagickBooleanType ExportShortPixel(const Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -1783,7 +1789,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -1801,7 +1807,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -1819,7 +1825,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -1834,7 +1840,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -1851,7 +1857,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -1869,7 +1875,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -1887,7 +1893,7 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
           p+=GetPixelChannels(image);
         }
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -1952,12 +1958,16 @@ static void ExportShortPixel(const Image *image,const RectangleInfo *roi,
       p+=GetPixelChannels(image);
     }
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-MagickExport MagickBooleanType ExportImagePixels(const Image *image,const ssize_t x,
-  const ssize_t y,const size_t width,const size_t height,const char *map,
-  const StorageType type,void *pixels,ExceptionInfo *exception)
+MagickExport MagickBooleanType ExportImagePixels(const Image *image,
+  const ssize_t x,const ssize_t y,const size_t width,const size_t height,
+  const char *map,const StorageType type,void *pixels,ExceptionInfo *exception)
 {
+  MagickBooleanType
+    status;
+
   QuantumType
     *quantum_map;
 
@@ -2089,49 +2099,48 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,const ssize_
   {
     case CharPixel:
     {
-      ExportCharPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportCharPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case DoublePixel:
     {
-      ExportDoublePixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportDoublePixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case FloatPixel:
     {
-      ExportFloatPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportFloatPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case LongPixel:
     {
-      ExportLongPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportLongPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case LongLongPixel:
     {
-      ExportLongLongPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportLongLongPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case QuantumPixel:
     {
-      ExportQuantumPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportQuantumPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case ShortPixel:
     {
-      ExportShortPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ExportShortPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     default:
     {
-      quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
       (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
         "UnrecognizedPixelMap","`%s'",map);
-      break;
+      status=MagickFalse;
     }
   }
   quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
-  return(MagickTrue);
+  return(status);
 }
 \f
 /*
@@ -2499,7 +2508,7 @@ MagickExport MagickRealType GetPixelIntensity(
 %
 */
 
-static void ImportCharPixel(Image *image,const RectangleInfo *roi,
+static MagickBooleanType ImportCharPixel(Image *image,const RectangleInfo *roi,
   const char *magick_restrict map,const QuantumType *quantum_map,
   const void *pixels,ExceptionInfo *exception)
 {
@@ -2536,7 +2545,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -2556,7 +2565,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRO") == 0)
     {
@@ -2576,7 +2585,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -2596,7 +2605,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -2613,7 +2622,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -2632,7 +2641,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -2652,7 +2661,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBO") == 0)
     {
@@ -2672,7 +2681,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -2692,7 +2701,7 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -2757,11 +2766,12 @@ static void ImportCharPixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,
-  const void *pixels,ExceptionInfo *exception)
+static MagickBooleanType ImportDoublePixel(Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,const void *pixels,ExceptionInfo *exception)
 {
   register const double
     *magick_restrict p;
@@ -2799,7 +2809,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -2823,7 +2833,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -2846,7 +2856,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -2864,7 +2874,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -2886,7 +2896,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -2910,7 +2920,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -2932,7 +2942,7 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
    length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -2997,9 +3007,10 @@ static void ImportDoublePixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
+static MagickBooleanType ImportFloatPixel(Image *image,const RectangleInfo *roi,
   const char *magick_restrict map,const QuantumType *quantum_map,
   const void *pixels,ExceptionInfo *exception)
 {
@@ -3039,7 +3050,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -3063,7 +3074,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -3086,7 +3097,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -3104,7 +3115,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -3126,7 +3137,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -3150,7 +3161,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -3172,7 +3183,7 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -3237,9 +3248,10 @@ static void ImportFloatPixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ImportLongPixel(Image *image,const RectangleInfo *roi,
+static MagickBooleanType ImportLongPixel(Image *image,const RectangleInfo *roi,
   const char *magick_restrict map,const QuantumType *quantum_map,
   const void *pixels,ExceptionInfo *exception)
 {
@@ -3276,7 +3288,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -3296,7 +3308,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -3316,7 +3328,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -3333,7 +3345,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -3352,7 +3364,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -3372,7 +3384,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -3392,7 +3404,7 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -3457,11 +3469,12 @@ static void ImportLongPixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,
-  const void *pixels,ExceptionInfo *exception)
+static MagickBooleanType ImportLongLongPixel(Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,const void *pixels,ExceptionInfo *exception)
 {
   register const MagickSizeType
     *magick_restrict p;
@@ -3496,7 +3509,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -3516,7 +3529,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -3536,7 +3549,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -3553,7 +3566,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -3572,7 +3585,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -3592,7 +3605,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -3612,7 +3625,7 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -3677,11 +3690,12 @@ static void ImportLongLongPixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
-  const char *magick_restrict map,const QuantumType *quantum_map,
-  const void *pixels,ExceptionInfo *exception)
+static MagickBooleanType ImportQuantumPixel(Image *image,
+  const RectangleInfo *roi,const char *magick_restrict map,
+  const QuantumType *quantum_map,const void *pixels,ExceptionInfo *exception)
 {
   register const Quantum
     *magick_restrict p;
@@ -3716,7 +3730,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -3736,7 +3750,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -3756,7 +3770,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -3773,7 +3787,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -3792,7 +3806,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -3812,7 +3826,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -3832,7 +3846,7 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -3897,9 +3911,10 @@ static void ImportQuantumPixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
-static void ImportShortPixel(Image *image,const RectangleInfo *roi,
+static MagickBooleanType ImportShortPixel(Image *image,const RectangleInfo *roi,
   const char *magick_restrict map,const QuantumType *quantum_map,
   const void *pixels,ExceptionInfo *exception)
 {
@@ -3936,7 +3951,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRA") == 0)
     {
@@ -3956,7 +3971,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"BGRP") == 0)
     {
@@ -3976,7 +3991,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"I") == 0)
     {
@@ -3993,7 +4008,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGB") == 0)
     {
@@ -4012,7 +4027,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBA") == 0)
     {
@@ -4032,7 +4047,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   if (LocaleCompare(map,"RGBP") == 0)
     {
@@ -4052,7 +4067,7 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
       }
-      return;
+      return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
     }
   length=strlen(map);
   for (y=0; y < (ssize_t) roi->height; y++)
@@ -4117,12 +4132,16 @@ static void ImportShortPixel(Image *image,const RectangleInfo *roi,
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
       break;
   }
+  return(y < (ssize_t) roi->height ? MagickFalse : MagickTrue);
 }
 
 MagickExport MagickBooleanType ImportImagePixels(Image *image,const ssize_t x,
   const ssize_t y,const size_t width,const size_t height,const char *map,
   const StorageType type,const void *pixels,ExceptionInfo *exception)
 {
+  MagickBooleanType
+    status;
+
   QuantumType
     *quantum_map;
 
@@ -4246,49 +4265,48 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,const ssize_t x,
   {
     case CharPixel:
     {
-      ImportCharPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportCharPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case DoublePixel:
     {
-      ImportDoublePixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportDoublePixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case FloatPixel:
     {
-      ImportFloatPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportFloatPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case LongPixel:
     {
-      ImportLongPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportLongPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case LongLongPixel:
     {
-      ImportLongLongPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportLongLongPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case QuantumPixel:
     {
-      ImportQuantumPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportQuantumPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     case ShortPixel:
     {
-      ImportShortPixel(image,&roi,map,quantum_map,pixels,exception);
+      status=ImportShortPixel(image,&roi,map,quantum_map,pixels,exception);
       break;
     }
     default:
     {
-      quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
       (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
         "UnrecognizedStorageType","`%d'",type);
-      return(MagickFalse);
+      status=MagickFalse;
     }
   }
   quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
-  return(MagickTrue);
+  return(status);
 }
 \f
 /*