Skip to content

Commit

Permalink
threading issue with identifying grayscale (ImageMagick/ImageMagick#7152
Browse files Browse the repository at this point in the history
)
  • Loading branch information
Cristy committed Mar 9, 2024
1 parent 3328513 commit e4537ca
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
4 changes: 1 addition & 3 deletions coders/jpeg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2326,9 +2326,7 @@ static MagickBooleanType WriteJPEGImage_(const ImageInfo *image_info,
*q;

ssize_t
i;

ssize_t
i,
y;

struct jpeg_error_mgr
Expand Down
13 changes: 9 additions & 4 deletions magick/attribute.c
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,9 @@ MagickExport ImageType IdentifyImageGray(const Image *image,
ImageType
type = BilevelType;

MagickBooleanType
status = MagickTrue;

ssize_t
y;

Expand All @@ -994,7 +997,7 @@ MagickExport ImageType IdentifyImageGray(const Image *image,
return(UndefinedType);
image_view=AcquireVirtualCacheView(image,exception);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(static) shared(type) \
#pragma omp parallel for schedule(static) shared(status,type) \
magick_number_threads(image,image,image->rows,2)
#endif
for (y=0; y < (ssize_t) image->rows; y++)
Expand All @@ -1005,19 +1008,19 @@ MagickExport ImageType IdentifyImageGray(const Image *image,
ssize_t
x;

if (type == UndefinedType)
if (status == MagickFalse)
continue;
p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
if (p == (const PixelPacket *) NULL)
{
type=UndefinedType;
status=MagickFalse;
continue;
}
for (x=0; x < (ssize_t) image->columns; x++)
{
if (IsPixelGray(p) == MagickFalse)
{
type=UndefinedType;
status=MagickFalse;
break;
}
if ((type == BilevelType) && (IsPixelMonochrome(p) == MagickFalse))
Expand All @@ -1028,6 +1031,8 @@ MagickExport ImageType IdentifyImageGray(const Image *image,
image_view=DestroyCacheView(image_view);
if ((type == GrayscaleType) && (image->matte != MagickFalse))
type=GrayscaleMatteType;
if (status == MagickFalse)
return(UndefinedType);
return(type);
}

Expand Down

0 comments on commit e4537ca

Please sign in to comment.