]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 23 Apr 2012 15:33:05 +0000 (15:33 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 23 Apr 2012 15:33:05 +0000 (15:33 +0000)
MagickCore/cache.c

index 663d0e54a2c932f57c78d7d60a6d0f49efa1140d..720143cacb2113343718420c01e25cd088f50b10 100644 (file)
@@ -900,25 +900,26 @@ static MagickBooleanType PixelCacheCloneUnoptimized(CacheInfo *clone_info,
     }
     length=clone_info->number_channels*sizeof(Quantum);
     (void) ResetMagickMemory(blob,0,length*sizeof(*blob));
-    for ( ; x < (ssize_t) clone_info->columns; x++)
-    {
-      /*
-        Set remaining columns as undefined.
-      */
-      if (clone_info->type != DiskCache)
-        (void) memcpy((unsigned char *) clone_info->pixels+clone_offset,blob,
-          length);
-      else
-        {
-          count=WritePixelCacheRegion(clone_info,clone_offset,length,blob);
-          if ((MagickSizeType) count != length)
-            {
-              status=MagickFalse;
-              break;
-            }
-        }
-      clone_offset+=length;
-    }
+    if (y < clone_info->rows)
+      for ( ; x < (ssize_t) clone_info->columns; x++)
+      {
+        /*
+          Set remaining columns as undefined.
+        */
+        if (clone_info->type != DiskCache)
+          (void) memcpy((unsigned char *) clone_info->pixels+clone_offset,blob,
+            length);
+        else
+          {
+            count=WritePixelCacheRegion(clone_info,clone_offset,length,blob);
+            if ((MagickSizeType) count != length)
+              {
+                status=MagickFalse;
+                break;
+              }
+          }
+        clone_offset+=length;
+      }
   }
   length=clone_info->number_channels*sizeof(Quantum);
   (void) ResetMagickMemory(blob,0,length*sizeof(*blob));
@@ -1016,28 +1017,30 @@ static MagickBooleanType PixelCacheCloneUnoptimized(CacheInfo *clone_info,
       }
       length=clone_info->metacontent_extent;
       (void) ResetMagickMemory(blob,0,length*sizeof(*blob));
-      for ( ; y < (ssize_t) clone_info->rows; y++)
-      {
-        /*
-          Set remaining rows as undefined.
-        */
-        for (x=0; x < (ssize_t) clone_info->columns; x++)
+      if (y < clone_info->rows)
+        for ( ; y < (ssize_t) clone_info->rows; y++)
         {
-          if (clone_info->type != DiskCache)
-            (void) memcpy((unsigned char *) clone_info->pixels+clone_offset,
-              blob,length);
-          else
-            {
-              count=WritePixelCacheRegion(clone_info,clone_offset,length,blob);
-              if ((MagickSizeType) count != length)
-                {
-                  status=MagickFalse;
-                  break;
-                }
-            }
-          clone_offset+=length;
+          /*
+            Set remaining rows as undefined.
+          */
+          for (x=0; x < (ssize_t) clone_info->columns; x++)
+          {
+            if (clone_info->type != DiskCache)
+              (void) memcpy((unsigned char *) clone_info->pixels+clone_offset,
+                blob,length);
+            else
+              {
+                count=WritePixelCacheRegion(clone_info,clone_offset,length,
+                  blob);
+                if ((MagickSizeType) count != length)
+                  {
+                    status=MagickFalse;
+                    break;
+                  }
+              }
+            clone_offset+=length;
+          }
         }
-      }
     }
   if (clone_info->type == DiskCache)
     (void) ClosePixelCacheOnDisk(clone_info);