yoyaのメモ

2017/02/13(Mon) ImageMagick-6.9.7-8差分

[]ImageMagick-6.9.7-8差分

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

The latest release of ImageMagick is version 6.9.7-8

まとめ

  • 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).

2017/02/05(Sun) ImageMagick-6.9.7-7差分

[]ImageMagick-6.9.7-7差分

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

The latest release of ImageMagick is version 6.9.7-7

まとめ

  • polixy権限に AllPolicyRights の定義が追加されたけど、もしかして仕様かわる? (例えばホワイトリスト対応してくれると嬉しいけど、後付けは難しそうだし。。)
追記 (2017/02/09)

差分

2279c2279,2280
<             if (isspace((int) ((unsigned char) value[i])) != 0)
---
>             if ((isspace((int) ((unsigned char) value[i])) != 0) ||
>                 (value[i] == '}'))
ChangeLog にないもの
  • coders/png.c
    • ワーニング抑止。
1840c1840
<       LogMagickEvent(CoderEvent,GetMagickModule(),
---
>       (void) LogMagickEvent(CoderEvent,GetMagickModule(),
<以下同様の (void)>
--  CCITT Group ヘッダ出力中にエラーがあった時のリソースリーク対策
397a398,399
     length=WriteLSBLong(file,(unsigned int) length);
     if (ferror(file) != 0)
>     {
>       (void) fclose(file);
         ThrowImageException(FileOpenError,"UnableToCreateTemporaryFile");
>     }
  • magick/constitute.c
    • 権限チェック
(略)
<   if (IsRightsAuthorized(domain,rights,read_info->magick) == MagickFalse)
---
>       if (IsRightsAuthorized(domain,rights,magick_info->module) == MagickFalse)
(略)
  • magick/policy.c
    • policy権限チェック。
593c593
<   while ((p != (PolicyInfo *) NULL) && (authorized != MagickFalse))
---
>   while (p != (PolicyInfo *) NULL)
598,606c598,603
<         if (((rights & ReadPolicyRights) != 0) &&
<             ((p->rights & ReadPolicyRights) == 0))
<           authorized=MagickFalse;
<         if (((rights & WritePolicyRights) != 0) &&
<             ((p->rights & WritePolicyRights) == 0))
<           authorized=MagickFalse;
<         if (((rights & ExecutePolicyRights) != 0) &&
<             ((p->rights & ExecutePolicyRights) == 0))
<           authorized=MagickFalse;
---
>         if ((rights & ReadPolicyRights) != 0)
>           authorized=(p->rights & ReadPolicyRights) != 0;
>         if ((rights & WritePolicyRights) != 0)
>           authorized=(p->rights & WritePolicyRights) != 0;
>         if ((rights & ExecutePolicyRights) != 0)
>           authorized=(p->rights & ExecutePolicyRights) != 0;
  • policy.h
    • まさか。。policy権限周りの仕様追加?
46c46,47
<   ExecutePolicyRights = 0x04
---
>   ExecutePolicyRights = 0x04,
>   AllPolicyRights = 0xff

ChangeLog

2017-01-28  6.9.7-7 Cristy  <quetzlzacatenango@image...>
  * Sanitize comments that include braces for the MIFF image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/368).

2017/01/28(Sat) ImageMagick-6.9.7-6差分

[]ImageMagick-6.9.7-6差分

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

The latest release of ImageMagick is version 6.9.7-6

まとめ

  • PNG の対応チャンク追加。(caNv, exIf, eXIf)
  • MAT 画像の不具合修正?

差分

  1. 2017-01-22 6.9.7-6 Glenn Randers-Pehrson <glennrp@image...>
  2. coders/png.c の read_vpag_chunk_callback() 関数を png_user_chunk_callback() に改名
  3. private PNG caNv (canvas) を実装、画像がクロップされた時に元の座標やオフセットを覚える為のチャンク。以前はその目的で oFFs と vpAg チャンクを使っていたが、他の oOFFs チャンクを使うアプリケーションと衝突する可能性がある。
  4. coders/png.c: 新しい PNC チャンク(exIf read-write, eXIf read-only)サポートの追加。lists.sourceforge.net の png-mng-misc メーリングリスト議論している
ChangeLog にないもの
  • magick/quantum-export.c
    • Alpha 付き Gray 画像の depth 処理で白と黒を表す値が逆になってたのを修正。(これって結構影響が大きいような。)
ExportGrayAlphaQuantum
2213c2213
<       if (quantum_info->min_is_white == MagickFalse)
---
>       if (quantum_info->min_is_white != MagickFalse)
         {
           black=0x01;
           white=0x00;
         }
370,371c370
<     if ((p == (const PixelPacket *) NULL) ||
<         (q == (PixelPacket *) NULL))
---
>     if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
386c385,387
<       if (id == offset)
---
>       if (id != offset)
>         status=GetMatrixElement(equivalences,id,0,&id);
>       else
389c390
<           if (n > (ssize_t) MaxColormapSize)
---
>           if (id >= (ssize_t) MaxColormapSize)
391d391
<           status=SetMatrixElement(equivalences,offset,0,&id);
393,395d392
<       else
<         {
<           status=GetMatrixElement(equivalences,id,0,&id);
397d393
<         }

ChangeLog

2017-01-27  6.9.7-6 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.7-6, GIT revision 11327:6b2f052:20170127.

2017-01-27  6.9.7-6 Cristy  <quetzlzacatenango@image...>
  * Uninitialized data in MAT image format (reference
    https://github.com/ImageMagick/ImageMagick/issues/362).

+2017-01-22  6.9.7-6 Glenn Randers-Pehrson <glennrp@image...>
  * Renamed read_vpag_chunk_callback() function to png_user_chunk_callback()
    in coders/png.c
  * Implemented a private PNG caNv (canvas) chunk for remembering the
    original dimensions and offsets when an image is cropped.  Previously
    we used the oFFs and vpAg chunks for this purpose, but this had potential
    conflicts with other applications that also use the oFFs chunk.
  * coders/png.c: Added support for a proposed new PNG chunk (exIf
    read-write, eXIf read-only) that is currently being discussed on the
    png-mng-misc at lists.sourceforge.net mailing list.

2017/01/21(Sat) ImageMagick-6.9.7-5差分

[]ImageMagick-6.9.7-5差分

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

The latest release of ImageMagick is version 6.9.7-5

まとめ

  • 透明度つき画像を tile: で貼ると、勝手にバックグラウンドがセットされる不具合を修正
  • 最近の C++ コンパイラを使う場合は register を削除して扱う。(元々非推奨)

差分

131,132d130
<   if (image->matte != MagickFalse)
<     (void) SetImageBackgroundColor(image);
ChangeLog にないもの
243a244,257
>   entry=SetMagickInfo("3GP");
>   entry->decoder=(DecodeImageHandler *) ReadMPEGImage;
>   entry->blob_support=MagickFalse;
>   entry->seekable_stream=MagickTrue;
>   entry->description=ConstantString("Media Container");
>   entry->module=ConstantString("MPEG");
>   (void) RegisterMagickInfo(entry);
>   entry=SetMagickInfo("3G2");
>   entry->decoder=(DecodeImageHandler *) ReadMPEGImage;
>   entry->blob_support=MagickFalse;
>   entry->seekable_stream=MagickTrue;
>   entry->description=ConstantString("Media Container");
>   entry->module=ConstantString("MPEG");
>   (void) RegisterMagickInfo(entry);
  • magick/coder.c
83a84,85
>     { "3GP", "MPEG" },
>     { "3G2", "MPEG" },
  • coders/tga.c
    • 変数名を具体的にしただけnexus。value から comment へ。
712a713
>     *comment,
769,771c770,772
<   value=GetImageProperty(image,"comment");
<   if (value != (const char *) NULL)
<     tga_info.id_length=(unsigned char) MagickMin(strlen(value),255);
---
>   comment=GetImageProperty(image,"comment");
>   if (comment != (const char *) NULL)
>     tga_info.id_length=(unsigned char) MagickMin(strlen(comment),255);
  • magick/cache.c
    • MagickAssumeAligned で失敗した時に ResetMagickMemory で cache初期化
4990c4990,4992
<   if (nexus_info->cache == (PixelPacket *) NULL)
---
>   if (nexus_info->cache != (PixelPacket *) NULL)
>     (void) ResetMagickMemory(nexus_info->cache,0,nexus_info->length);
>   else
  • magick/image.c
    • SyncImage で ping された画像の場合は何もせず true を返す。(いいのかな。コレ)
3592a3593,3594
>   if (image->ping != MagickFalse)
>     return(MagickTrue);
  • magick/MagickCore.h
    • そういえば、C++11 から deplicatedだし、最適化の邪魔になるので結構前から非推奨。
49a50,52
> #if __cplusplus > 199711L
> #define register
> #endif

ChangeLog

2017-01-14  6.9.7-5 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.7-5, GIT revision 11306:cd9b64b:20170121.

2017-01-18  6.9.7-5 Cristy  <quetzlzacatenango@image...>
  * Don't set background for transparent tiled images (reference
    http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=31210).

2017/01/15(Sun) ImageMagick-6.9.7-4差分

[]ImageMagick-6.9.7-4差分

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

The latest release of ImageMagick is version 6.9.7-4

まとめ


差分

ChangeLog にないもの

(調査中)

ChangeLog

2017-01-14  6.9.7-4 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.7-4, GIT revision 11293:272cd5d:20170114.

2017-01-14  6.9.7-4 Dirk Lemstra <dirk@lem.....org>
  * Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the
    BMP encoder (reference
    https://github.com/ImageMagick/ImageMagick/issues/344).

2017-01-10  6.9.7-4 Cristy  <quetzlzacatenango@image...>
  * Recognize XML policy closing tags (reference
    https://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=31182).
  * Fix memory leak in MPC image format.