From 450949ed017f009b399c937cf362f0058eacc5fa Mon Sep 17 00:00:00 2001 From: Cristy Date: Sat, 19 Mar 2022 07:01:57 -0400 Subject: [PATCH] Pull request: https://github.com/ImageMagick/ImageMagick/pull/4963 --- coders/emf.c | 3 ++- coders/psd.c | 5 +++-- magick/widget.c | 6 ++++++ wand/animate.c | 5 ++++- wand/display.c | 5 ++++- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/coders/emf.c b/coders/emf.c index 39c0ac726b..efc92c303f 100644 --- a/coders/emf.c +++ b/coders/emf.c @@ -411,7 +411,8 @@ static HENHMETAFILE ReadEnhMetaFile(const char *path,ssize_t *width, } ReadFile(hFile,pBits,dwSize,&dwSize,NULL); CloseHandle(hFile); - if (((PAPMHEADER) pBits)->dwKey != 0x9ac6cdd7l) + if (((PAPMHEADER) pBits)->dwKey != 0x9ac6cdd7l || + (((PAPMHEADER) pBits)->wInch == 0)) { pBits=(BYTE *) DestroyString((char *) pBits); return((HENHMETAFILE) NULL); diff --git a/coders/psd.c b/coders/psd.c index 19d36f0a0e..eedcf3782d 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -1048,8 +1048,9 @@ static MagickBooleanType ReadPSDChannelPixels(Image *image, number_bits=8; for (bit=0; bit < number_bits; bit++) { - SetPSDPixel(image,channels,type,packet_size,(((unsigned char) pixel) - & (0x01 << (7-bit))) != 0 ? 0 : QuantumRange,q++,indexes,x++); + SetPSDPixel(image,channels,type,packet_size, + (((unsigned char) ((ssize_t) pixel)) & (0x01 << (7-bit))) != 0 ? 0 : + QuantumRange,q++,indexes,x++); } if (x != (ssize_t) image->columns) x--; diff --git a/magick/widget.c b/magick/widget.c index 96fb7cd8df..dea54667d5 100644 --- a/magick/widget.c +++ b/magick/widget.c @@ -7861,6 +7861,8 @@ MagickExport int XMenuWidget(Display *display,XWindows *windows, break; } state&=(~InactiveWidgetState); + if (selection_info.height == 0) + break; id=(event.xbutton.y-top_offset)/(int) selection_info.height; selection_info.id=id; if ((id < 0) || (id >= (int) number_selections)) @@ -7914,6 +7916,8 @@ MagickExport int XMenuWidget(Display *display,XWindows *windows, if (event.xcrossing.state == 0) break; state&=(~InactiveWidgetState); + if (selection_info.height == 0) + break; id=((event.xcrossing.y-top_offset)/(int) selection_info.height); if ((selection_info.id >= 0) && (selection_info.id < (int) number_selections)) @@ -8000,6 +8004,8 @@ MagickExport int XMenuWidget(Display *display,XWindows *windows, break; if (state & InactiveWidgetState) break; + if (selection_info.height == 0) + break; id=(event.xmotion.y-top_offset)/(int) selection_info.height; if ((selection_info.id >= 0) && (selection_info.id < (int) number_selections)) diff --git a/wand/animate.c b/wand/animate.c index 0f70436108..adc84d8679 100644 --- a/wand/animate.c +++ b/wand/animate.c @@ -1143,7 +1143,10 @@ WandExport MagickBooleanType AnimateImageCommand(ImageInfo *image_info, if (i == (ssize_t) argc) ThrowAnimateException(OptionError,"MissingArgument",option); if (XRemoteCommand(display,resource_info.window_id,argv[i]) != 0) - return(MagickFalse); + { + DestroyAnimate(); + return(MagickFalse); + } i--; break; } diff --git a/wand/display.c b/wand/display.c index b7b9ed932d..27abafa1b5 100644 --- a/wand/display.c +++ b/wand/display.c @@ -1491,7 +1491,10 @@ WandExport MagickBooleanType DisplayImageCommand(ImageInfo *image_info, if (i == (ssize_t) argc) ThrowDisplayException(OptionError,"MissingArgument",option); if (XRemoteCommand(display,resource_info.window_id,argv[i]) != 0) - return(MagickFalse); + { + DestroyDisplay(); + return(MagickFalse); + } i--; break; }