ImageMagick-6.9.6-6差分

ImageMagick-6.9.6-5差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.6-6

まとめ

差分

ChangeLog にないもの
  • 減色の色決定時の色差計算にガンマ値を考慮
  • -clone オプションのメモリリーク対処で、free したのは良いけど NULL初期化が消えたのが後で怖そう。
ChangeLog の分
  • magick/annotate.c
602a603
>   width=0;
647a649,703
>   if (width > image->columns)
>     {
>       char
>         *text;
>
>       /*
>         No convenient break point, force one.
>       */
>       text=AcquireString(draw_info->text);
<大量に>
  • coders/ept.c
218c218
<   if (offset < 30)
---
>   if ((ept_info.tiff_length != 0) && (offset < 30))
225c225
<   if (offset < 30)
---
>   if ((ept_info.postscript_length != 0) && (offset < 30))
  • magick/draw.c
1442c1442,1443
<   clone_info->clip_mask=(char *) NULL;
---
>   if (clone_info->clip_mask != (char *) NULL)
>     clone_info->clip_mask=DestroyString(clone_info->clip_mask);

これはこれで NULL を入れなくなったので、ワイルドポインタの危険性が追加されたような?

ChangeLogにない差分
  • Makefile.am
    • Makefile の元ネタでドキュメント一覧を走査する for を修正。あとディレクトリがないときにスキップする。
251c251
<       @for dir in $(DOCDIRS) ; do \
---
>       for dir in $(DOCDIRS) ; do \
258,261c258,263
<         for file in $$docsrcdir/*.* ; do \
<           echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$$dir" ; \
<           $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$$dir ; \
<         done ; \
---
>         if test -d $$docsrcdir; then \
>           for file in $$docsrcdir/*.* ; do \
>               echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$$dir" ; \
>               $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$$dir ; \
>           done ; \
>         fi; \
  • coders/rle.c
230c230
<     if (map_length >= 32)
---
>     if (map_length >= 22)
337a338,339
>     if ((iris_info.dimension == 0) || (iris_info.dimension > 3))
>       ThrowReaderException(CorruptImageError,"ImproperImageHeader");
360a363
>     image->matte=iris_info.depth == 4 ? MagickTrue : MagickFalse;
553,558d555
<     /*
<       Initialize image structure.
<     */
<     image->matte=iris_info.depth == 4 ? MagickTrue : MagickFalse;
<     image->columns=iris_info.columns;
<     image->rows=iris_info.rows;
  • config/config.h.in
    • readdir_r の有無を configure で吸収
396,398d395
< /* Define to 1 if you have the `readdir_r' function. */
< #undef HAVE_READDIR_R
<

magick/cache.c

1699d1698
<   assert(cache_info->opencl != (OpenCLCacheInfo *) NULL);
diff -rB ImageMagick-6.9.6-5/magick/compare.c ImageMagick-6.9.6-6/magick/compare.c
765a766
>     gamma,
  • magick/property.c
    • indent オプションが消えて、colors, compression, interlace, quality, rendering-intent が追加された
>       if (LocaleCompare("colors",property) == 0)
>         {
>           image->colors=GetNumberColors(image,(FILE *) NULL,&image->exception);
>           (void) FormatLocaleString(value,MaxTextExtent,"%.20g",(double)
>             image->colors);
>           break;
>         }
2908a2916,2921
>       if (LocaleCompare("compression",property) == 0)
>         {
>           string=CommandOptionToMnemonic(MagickCompressOptions,(ssize_t)
>             image->compression);
>           break;
>         }
2984a2998,3003
>       if (LocaleCompare("interlace",property) == 0)
>         {
>           string=CommandOptionToMnemonic(MagickInterlaceOptions,(ssize_t)
>             image->interlace);
>           break;
>         }
3137a3157,3166
>     case 'q':
>     {
>       if (LocaleCompare("quality",property) == 0)
>         {
>           (void) FormatLocaleString(value,MaxTextExtent,"%.20g",(double)
>             image->quality);
>           break;
>         }
>       break;
>     }
3139a3169,3174
>       if (LocaleCompare("rendering-intent",property) == 0)
>         {
>           string=CommandOptionToMnemonic(MagickIntentOptions,(ssize_t)
>             image->rendering_intent);
>           break;
>         }
4089,4100d4123
<           break;
<         }
<       if (LocaleCompare("intent",property) == 0)
<         {
<           ssize_t
<             rendering_intent;
<
<           rendering_intent=ParseCommandOption(MagickIntentOptions,MagickFalse,
<             value);
<           if (rendering_intent < 0)
<             break;
<           image->rendering_intent=(RenderingIntent) rendering_intent;
  • magick/quantize.c
    • 減色の色決定時の色差計算にガンマ値を考慮
>     gamma,
2187,2190c2188,2191
<   image->error.mean_error_per_pixel=(double) mean_error_per_pixel/area;
<   image->error.normalized_mean_error=(double) QuantumScale*QuantumScale*
<     mean_error/area;
<   image->error.normalized_maximum_error=(double) QuantumScale*maximum_error;
---
>   gamma=PerceptibleReciprocal(area);
>   image->error.mean_error_per_pixel=gamma*mean_error_per_pixel;
>   image->error.normalized_mean_error=gamma*QuantumScale*QuantumScale*mean_error;
>   image->error.normalized_maximum_error=QuantumScale*maximum_error;
  • magick/utility.c
    • readdir_r がない時の処理
1551,1554d1550
< #if defined(MAGICKCORE_HAVE_READDIR_R)
<   return(readdir_r(directory,entry,result));
< #else
<   (void) entry;
1556,1558c1552,1556
<   *result=readdir(directory);
<   return(errno);
< #endif
---
>   entry=readdir(directory);
>   *result=entry;
>   if ((entry == (struct dirent *) NULL) && (errno != 0))
>     return(-1);
>   return(0);

ChangeLog

2016-11-25  6.9.6-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.6-6, GIT revision 11169:94edafc:20161125.

2016-11-20  6.9.6-6 Cristy  <quetzlzacatenango@image...>
  * If a convenient line break is not found, force it for caption: (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
  * Off by 1 error when computing the standard deviation (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=30866).
  * Apply Debian patches, (reference
    https://github.com/ImageMagick/ImageMagick/issues/304).
  * Permit EPT images with just a TIFF or EPS image, not both (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=30921).
  * The -clone option no longer leak memory.