ImageMagick-6.9.7-8差分

ImageMagick-6.9.7-7差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.7-8

  • 7 系同時リリースは無し。

まとめ

  • JPEG なしでビルド出来なかったのを修正
  • 余分なアサーションを削除 (read のみ許可で書き込みを実行した時)
  • Magick++ でネストした例外のメモリリーク修正
  • PDF 中の URL のエスケープ。
  • PerlMagick quantum の ChannelFeatures の小数点表示の桁数を15から20に増やした

差分

Magick++/lib/Exception.cpp
4c4
< // Copyright Dirk Lemstra 2014-2015
---
> // Copyright Dirk Lemstra 2014-2017
840a841
>   q=(Exception *) NULL;
854a856
>               {
855a858,859
>                 q=nestedException;
>               }
858,860c862,867
<                 q=createException(p);
<                 nestedException->nested(q);
<                 nestedException=q;
---
>                 Exception
>                   *r;
>
>                 r=createException(p);
>                 q->nested(r);
>                 q=r;
ChangeLog にないもの
  • ImageMagick-6.9.7-8/Magick++/lib/Thread.cpp
    • pthread_mutex_destroy でエラーが出た時の処理を追加
3a4
> // Copyright Dirk Lemstra 2017
62,66c63
<   int sysError;
<   if ( (sysError = ::pthread_mutex_destroy( &_mutex )) == 0 )
<     return;
<   throwExceptionExplicit( OptionError, "mutex destruction failed",
<                           strerror(sysError) );
---
>   (void) ::pthread_mutex_destroy(&_mutex);
69,71c66
<   if ( ::CloseHandle(_mutex.id) != 0 )
<     return;
<   throwExceptionExplicit( OptionError, "mutex destruction failed" );
  • PerlMagick/quantum/quantum.xs
    • quantum の ChannelFeatures の小数点表示の桁数を15から20に増やした
#define ChannelFeatures(channel,direction) \
{ \
<   (void) FormatLocaleString(message,MaxTextExtent,"%.15g", \
>   (void) FormatLocaleString(message,MaxTextExtent,"%.20g", \
    channel_features[channel].angular_second_moment[direction]); \
<以下同様>
  • coders/pdf.c
    • PDF 中の URLのエスケープ
1223a1224
>     *escape,
1407a1409
>       escape=EscapeParenthesis(basename);
1409,1410c1411,1412
<         XMPProfileMagick,modify_date,create_date,timestamp,url,
<         EscapeParenthesis(basename),url);
---
>         XMPProfileMagick,modify_date,create_date,timestamp,url,escape,url);
>       escape=DestroyString(escape);
2837,2838c2839,2841
<   (void) FormatLocaleString(buffer,MaxTextExtent,"/Producer (%s)\n",
<     EscapeParenthesis(url));
---
>   escape=EscapeParenthesis(url);
>   (void) FormatLocaleString(buffer,MaxTextExtent,"/Producer (%s)\n",escape);
>   escape=DestroyString(escape);
  • coders/png.c
    • PNGsLong を JNG_SUPPORTED の ifdef でくくるのをやめた。
1212d1211
< #if defined(JNG_SUPPORTED)
1220d1218
< #endif
  • coders/psd.c
    • CloneImage の NULL チェックを入れた。CloneImage は cokumns や rows が 0 の時には NULL が変える事ある。
mask=CloneImage(image,layer_info->mask.page.width,
         layer_info->mask.page.height,MagickFalse,exception);
1286a1287,1288
>       if (mask != (Image *) NULL)
>         {
           mask->matte=MagickFalse;
           channel_image=mask;
>     }
  • coders/sun.c
    • メモリアクセスの境界違反対策
461c461
<     sun_pixels=(unsigned char *) AcquireQuantumMemory(pixels_length,
---
>     sun_pixels=(unsigned char *) AcquireQuantumMemory(pixels_length+image->rows,
  • coders/xcf.c
    • 画像の1枚目を削除する前に、複数ある事をチェックする。
     (void) CloseBlob(image);
1447a1448
>   if (GetNextImageInList(image) != (Image *) NULL)
       DestroyImage(RemoveFirstImageFromList(&image));
     if (image_type == GIMP_GRAY)
       image->type=GrayscaleType;
     return(GetFirstImageInList(image));
  • magick/statistic.c
    • sum や standard_:deviation に area を掛け算してる。

2276c2276,2277< area;

    • -

> area,
> standard_deviation;
2335a2337,2339
> /*
> Compute pixel statistics.
> */
2475d2478< area=(double) image->columns*image->rows;
2479c2482,2484< mean;

    • -

> area,
> mean,
> standard_deviation;
2481c2486,2490< mean=channel_statistics[i].sum/area;

    • -

> /*
> Normalize pixel statistics.
> */
> area=PerceptibleReciprocal((double) image->columns*image->rows);
> mean=channel_statistics[i].sum*area;
2483,2485c2492,2494< channel_statistics[i].sum_squared/=area;< channel_statistics[i].sum_cubed/=area;< channel_statistics[i].sum_fourth_power/=area;
<以下大量に area を乗算する処理>
|

ChangeLog

2017-02-09  6.9.7-8 Dirk Lemstra <dirk@lem.....org>
  * Fixed memory leak when creating nested exceptions in Magick++ (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=23&p=142634)

2017-02-06  6.9.7-8 Cristy  <quetzlzacatenango@image...>
  * Eliminate bogus assertion (reference
    https://github.com/ImageMagick/ImageMagick/issues/372).
  * Unbreak build without JPEG support (reference
    https://github.com/ImageMagick/ImageMagick/pull/373).