diff --git a/magick/cache.c b/magick/cache.c
index 5680068..5c2c20a 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -4629,12 +4629,6 @@
length=(MagickSizeType) nexus_info->region.width*sizeof(IndexPacket);
rows=nexus_info->region.height;
number_pixels=length*rows;
- if ((cache_info->columns == nexus_info->region.width) &&
- (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
- {
- length=number_pixels;
- rows=1UL;
- }
q=nexus_info->indexes;
switch (cache_info->type)
{
@@ -4647,6 +4641,12 @@
/*
Read indexes from memory.
*/
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
p=cache_info->indexes+offset;
for (y=0; y < (long) rows; y++)
{
@@ -4667,6 +4667,12 @@
cache_info->cache_filename);
return(MagickFalse);
}
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels < MagickMaxBufferExtent))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
number_pixels=(MagickSizeType) cache_info->columns*cache_info->rows;
for (y=0; y < (long) rows; y++)
{
@@ -4754,12 +4760,6 @@
length=(MagickSizeType) nexus_info->region.width*sizeof(PixelPacket);
rows=nexus_info->region.height;
number_pixels=length*rows;
- if ((cache_info->columns == nexus_info->region.width) &&
- (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
- {
- length=number_pixels;
- rows=1UL;
- }
q=nexus_info->pixels;
switch (cache_info->type)
{
@@ -4772,6 +4772,12 @@
/*
Read pixels from memory.
*/
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
p=cache_info->pixels+offset;
for (y=0; y < (long) rows; y++)
{
@@ -4792,6 +4798,12 @@
cache_info->cache_filename);
return(MagickFalse);
}
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels < MagickMaxBufferExtent))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
for (y=0; y < (long) rows; y++)
{
count=ReadPixelCacheRegion(cache_info,cache_info->offset+offset*
@@ -5333,12 +5345,6 @@
length=(MagickSizeType) nexus_info->region.width*sizeof(IndexPacket);
rows=nexus_info->region.height;
number_pixels=(MagickSizeType) length*rows;
- if ((cache_info->columns == nexus_info->region.width) &&
- (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
- {
- length=number_pixels;
- rows=1UL;
- }
p=nexus_info->indexes;
switch (cache_info->type)
{
@@ -5351,6 +5357,12 @@
/*
Write indexes to memory.
*/
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
q=cache_info->indexes+offset;
for (y=0; y < (long) rows; y++)
{
@@ -5371,6 +5383,12 @@
cache_info->cache_filename);
return(MagickFalse);
}
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels < MagickMaxBufferExtent))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
number_pixels=(MagickSizeType) cache_info->columns*cache_info->rows;
for (y=0; y < (long) rows; y++)
{
@@ -5459,12 +5477,6 @@
length=(MagickSizeType) nexus_info->region.width*sizeof(PixelPacket);
rows=nexus_info->region.height;
number_pixels=length*rows;
- if ((cache_info->columns == nexus_info->region.width) &&
- (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
- {
- length=number_pixels;
- rows=1UL;
- }
p=nexus_info->pixels;
switch (cache_info->type)
{
@@ -5477,6 +5489,12 @@
/*
Write pixels to memory.
*/
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels == (MagickSizeType) ((size_t) number_pixels)))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
q=cache_info->pixels+offset;
for (y=0; y < (long) rows; y++)
{
@@ -5497,6 +5515,12 @@
cache_info->cache_filename);
return(MagickFalse);
}
+ if ((cache_info->columns == nexus_info->region.width) &&
+ (number_pixels < MagickMaxBufferExtent))
+ {
+ length=number_pixels;
+ rows=1UL;
+ }
for (y=0; y < (long) rows; y++)
{
count=WritePixelCacheRegion(cache_info,cache_info->offset+offset*