ImageMagick-6.9.9-32差分

ImageMagick-6.9.9-31差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.9-32

まとめ

メモリリークの修正。numerous(たくさん)

差分

2987a2988,2995
>   if (graymap != (int *) NULL) \
>     graymap=(int *) RelinquishMagickMemory(graymap); \
>   if (bluemap != (int *) NULL) \
>     bluemap=(int *) RelinquishMagickMemory(bluemap); \
>   if (greenmap != (int *) NULL) \
>     greenmap=(int *) RelinquishMagickMemory(greenmap); \
>   if (redmap != (int *) NULL) \
>     redmap=(int *) RelinquishMagickMemory(redmap); \
3072a3081,3084
>   graymap=(int *) NULL;
>   redmap=(int *) NULL;
>   greenmap=(int *) NULL;
>   bluemap=(int *) NULL;
    • /coders/pattern.c
981c981,984
<     ThrowReaderException(OptionError,"UnrecognizedImageFormat");
---
>     {
>       blob_info=DestroyImageInfo(blob_info);
>       ThrowReaderException(OptionError,"UnrecognizedImageFormat");
>     }
diff -r ImageMagick-6.9.9-31/coders/rla.c ImageMagick-6.9.9-32/coders/rla.c
292c292,295
<       ThrowReaderException(CorruptImageError,"ImproperImageHeader");
---
>       {
>         scanlines=(MagickOffsetType *) RelinquishMagickMemory(scanlines);
>         ThrowReaderException(CorruptImageError,"ImproperImageHeader");
>       }
  • magick/cache.c
1893c1893,1895
<               if (status != MagickFalse)
---
>               if (status == MagickFalse)
>                 clone_info=(CacheInfo *) DestroyPixelCache(clone_info);
>               else
ChangeLogにない差分
  • 使ってる automake が 1.15 から 1.15.1 に
  • coders/sixel.c
    • バッファサイズ をMaxTextExtent 分多めに確保。
1002c1002,1003
<   sixel_buffer=(char *) AcquireQuantumMemory((size_t) length,sizeof(*sixel_buffer));
---
>   sixel_buffer=(char *) AcquireQuantumMemory((size_t) length+MaxTextExtent,
>     sizeof(*sixel_buffer));
1015,1016c1016,1017
<       sixel_buffer=(char *) ResizeQuantumMemory(sixel_buffer,length+MaxTextExtent,
<         sizeof(*sixel_buffer));
---
>       sixel_buffer=(char *) ResizeQuantumMemory(sixel_buffer,length+
>         MaxTextExtent,sizeof(*sixel_buffer));
1023c1024
<
---
>   sixel_buffer[length]='\0';
  • magick/identify.c
    • ピクセルの透明度を探す処理のリファイン。
    • 見つかったら途中で抜けるので、インデックスが途中だからアルファがあるというのを found のフラグ処理に変えてる。
978a979,981
>           MagickBooleanType
>             found = MagickFalse;
>
996c999,1002
<                 break;
---
>                 {
>                   found=MagickTrue;
>                   break;
>                 }
999c1005
<             if (x < (ssize_t) image->columns)
---
>             if (found != MagickFalse)
1002c1008
<           if ((x < (ssize_t) image->columns) || (y < (ssize_t) image->rows))
---
>           if (found != MagickFalse)
1011,1012c1017
<               if (p != (const PixelPacket *) NULL)
<                 SetMagickPixelPacket(image,p,indexes+x,&pixel);
---
>               SetMagickPixelPacket(image,p,indexes+x,&pixel);
  • magick/magick-baseconfig.h
    • 何かの間違い?
415,417c415
< #ifndef MAGICKCORE_HAVE_LOCALE_T
< #define MAGICKCORE_HAVE_LOCALE_T 1
< #endif
---
> /* #undef HAVE_LOCALE_T */
1062,1064c1060
< #ifndef MAGICKCORE_HAVE_XLOCALE_H
< #define MAGICKCORE_HAVE_XLOCALE_H 1
< #endif

ChangeLog

2018-01-06  6.9.9-32 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.9-32, GIT revision 12489:33a04d3e5:20180105.

2018-01-05  6.9.9-32 Cristy  <quetzlzacatenango@image...>
  * Fixed numerous memory leaks (reference
    https://github.com/ImageMagick/ImageMagick/issues).