ImageMagick-6.9.10-20差分

ImageMagick-6.9.10-19差分 - yoya's diaryの続き

The latest release of ImageMagick is version 6.9.10-20

まとめ

気になる事

差分

ChangeLog にない差分
  • coders/dcm.c
    • オフセットのファイル内かどうかチェック
4017c4017,4024
<               stream_info->offsets[i]=(ssize_t) ReadBlobLSBSignedLong(image);
---
>               MagickOffsetType
>                 offset;
>
>               offset=(MagickOffsetType) ReadBlobLSBSignedLong(image);
>               if (offset > (MagickOffsetType) GetBlobSize(image))
>                 ThrowDCMException(CorruptImageError,
>                   "InsufficientImageDataInFile");
>               stream_info->offsets[i]=(ssize_t) offset;
  • coders/hald.c
    • いろいろ
105a106
>     i,
122c123,125
<   if (level < 2)
---
>   if (image_info->scene != 0)
>     level=image_info->scene;
>   if ((level < 2) || (level > 256))
169a173,178
>   (void) CloseBlob(image);
>   if (status == MagickFalse)
>     return(DestroyImageList(image));
>   if (image_info->scene != 0)
>     for (i=0; i < (ssize_t) image_info->scene; i++)
>       AppendImageToList(&image,CloneImage(image,0,0,MagickTrue,exception));
  • coders/jpeg.c
    • 違い分からないけど diff で出てきた。。
135|4a1355,1357
>   if ((dct_method == (const char *) NULL) && (image->quality > 0) &&
>       (image->quality <= 90))
>     jpeg_info.dct_method=JDCT_IFAST;
1361,1363d1363
<   if ((dct_method == (const char *) NULL) && (image->quality > 0) &&
<       (image->quality <= 90))
<     jpeg_info.dct_method=JDCT_IFAST;

ChangeLog

2018-12-23  6.9.10-20 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.10-20, GIT revision 14079:0ce665411:20181223

ImageMagick-6.9.10-19差分

ImageMagick-6.9.10-18差分 - yoya's diaryの続き

The latest release of ImageMagick is version 6.9.10-19

まとめ

気になる事
  • GIF の透明度の処理気になる。
  • JPEGXMP namespace に27文字の上限ついた

差分

ChangeLog にない差分
  • coders/gif.c

1292c1292< image->colors=(size_t) (opacity+1);

    • -

> opacity=(-1);

  • coders/jpeg.c
    • XMP namespace の上限をつけた。28-1文字
176a177
> ^L#define XmpNamespaceExtent 28
651c652,653
<   iptc_profile=(StringInfo *) GetImageProfile(image,"iptc");
---
>   /* The IPTC profile is actually an 8bim */
>   iptc_profile=(StringInfo *) GetImageProfile(image,"8bim");
659c661
<       status=SetImageProfile(image,"iptc",profile);
---
>       status=SetImageProfile(image,"8bim",profile);
743,744c745,746
<       if ((length > strlen(xmp_namespace)) &&
<           (LocaleNCompare((char *) p,xmp_namespace,strlen(xmp_namespace)) == 0))
---
>       else if ((length > XmpNamespaceExtent) &&
>           (LocaleNCompare((char *) p,xmp_namespace,XmpNamespaceExtent-1) == 0))
752,753c754,755
<           p=GetStringInfoDatum(profile);
<           for (j=0; j < (ssize_t) GetStringInfoLength(profile); j++)
---
>           p=GetStringInfoDatum(profile)+XmpNamespaceExtent;
>           for (j=XmpNamespaceExtent; j < (ssize_t) GetStringInfoLength(profile); j++)
2122c2124
<             GetStringInfoDatum(xmp_profile)[28]='\0';
---
>             GetStringInfoDatum(xmp_profile)[XmpNamespaceExtent]='\0';
 ||<

- magick/identify.c
-- image->extent を活用して GetBlobSize を呼ぶのを減らす
>|c|
668c668
<       if (GetBlobSize(image) != 0)
---
>       if (image->extent != 0)
670c670
<           (void) FormatMagickSize(GetBlobSize(image),MagickTrue,format);
---
>           (void) FormatMagickSize(image->extent,MagickTrue,format);
1443c1443
<   (void) FormatMagickSize(GetBlobSize(image),MagickTrue,format);
---
>   (void) FormatMagickSize(image->extent,MagickTrue,format);
diff -rwb ImageMagick-6.9.10-18/magick/image.c ImageMagick-6.9.10-19/magick/image.c
831a832
>   clone_image->extent=image->extent;

ChangeLog

2018-12-19  6.9.10-19 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.10-19, GIT revision 14069:0ca60eda0:20181219

ImageMagick-6.9.10-18差分

ImageMagick-6.9.10-17差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.10-18

まとめ

  • caption: で背景にゴミが混ざるかもしれなかった処理の対処。
  • dib で bpp 8 を超える値はヘッダチェックで弾く。
  • PNG から抽出するコメントに改行が混ざってたのを修正した。(入出力すると改行が増えてたかも?)
気になる事

差分

ChangeLog にない差分
  • coders/caption.c
    • 背景色での初期化処理を追加。
138a139,140
>   if ((image->columns != 0) && (image->rows != 0))
>     (void) SetImageBackgroundColor(image);
  • coders/dib.c
    • bits_per_pixel は 8以下しか許さない(?)
593a594,595
>   if ((dib_info.number_colors != 0) && (dib_info.bits_per_pixel > 8))
>     ThrowReaderException(CorruptImageError,"ImproperImageHeader");
596c598
<   if ((dib_info.number_colors != 0) || (dib_info.bits_per_pixel < 16))
---
>   if ((dib_info.number_colors != 0) || (dib_info.bits_per_pixel <= 8))
  • coders/pnm.c
    • PNM コメント読み込みの修正。コメントの後ろに改行がある時に、改行をコメントに含めないようにした。
177c177
<     if ((c != EOF) && (c != (int) '\n') && (c != (int) '\r'))
---
>     if (c != EOF)
  • magick/magick-type.h
    • 型定義の long double 対応。
49c49
#elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_LONG_DOUBLE)
< typedef double MagickFloatType;
---
> typedef long double MagickFloatType;
#else
58c58
#elif (MAGICKCORE_SIZEOF_DOUBLE_T == MAGICKCORE_SIZEOF_LONG_DOUBLE)
< typedef double MagickDoubleType;
---
> typedef long double MagickDoubleType;
#else
  • magick/profile.c
    • source_colorspace 変数を設定しているが、まだ使ってないのでとりあえずコンパイラを黙らせてる。(何か作り中?)
1011a1012
>             (void) source_colorspace;

ChangeLog

2018-12-18  6.9.10-18 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.10-18, GIT revision 14061:2f9ab1cea:20181218

2018-12-18  6.9.10-18 Cristy  <quetzlzacatenango@image...>
  * Revert MagickDoubleType patch to avoid i386 ABI break (reference
    https://github.com/ImageMagick/ImageMagick6/issues/31);

ImageMagick-6.9.10-17差分

ImageMagick-6.9.10-16差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.10-17

まとめ

(調査中)

気になる事

(調査中)

差分

ChangeLog にない差分

(調査中)

ChangeLog

2018-12-16  6.9.10-17 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.10-17, GIT revision 14053:4ae0f812c:20181216

ImageMagick-6.9.10-16差分

ImageMagick-6.9.10-15差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.10-16

まとめ

前回の SVG修正が今回の ChangeLog に乗った。

気になる事

(調査中)

差分

ChangeLog にない差分

(調査中)

ChangeLog

2018-12-02  6.9.10-16 Cristy  <quetzlzacatenango@image...>
  * Check for modulo underflow.
  * Change SVG default DPI to 86 from 90 to meet recommendation of SVG2 & CSS.

ImageMagick-6.9.10-15差分

ImageMagick-6.9.10-14差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.10-15

まとめ

  • DefaultSVGDensity を 90 から 96 に変更。
気になる事
  • GIF の長さチェックおかしかったの今まで大丈夫?
  • DICOM で Explicit VR のケアが増えた場所が LittleEndian 前提。BigEndian 無しでいいの?
  • magick_attribute で可変引数等で期待しない引数を渡された時の警告が入ってる。

差分

ChangeLog にない差分
  • coders/bmp.c
    • 長さチェックの間違いで7倍はみ出てそう
coders/bmp.c
968,969d967
<     if (((MagickSizeType) length/8) > GetBlobSize(image))
<       ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile");
972a971,972
>         if ((MagickSizeType) length > GetBlobSize(image))
>           ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile");

coders/dcm.c

    • Explicit VR (Transfer Syntax の一種) としての処理に OF, UT を追加。
3205,3208c3205,3210
<           if ((strncmp(explicit_vr,"OB",2) == 0) ||
<               (strncmp(explicit_vr,"UN",2) == 0) ||
<               (strncmp(explicit_vr,"OW",2) == 0) ||
<               (strncmp(explicit_vr,"SQ",2) == 0))
---
>           if ((strcmp(explicit_vr,"OB") == 0) ||
>               (strcmp(explicit_vr,"OW") == 0) ||
>               (strcmp(explicit_vr,"OF") == 0) ||
>               (strcmp(explicit_vr,"SQ") == 0) ||
>               (strcmp(explicit_vr,"UN") == 0) ||
>               (strcmp(explicit_vr,"UT") == 0))
  • coders/dib.c
    • 長さチェック
672a673,674
>   if ((MagickSizeType) length > (256*GetBlobSize(image)))
>     ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile");
  • coders/fits.c
    • depth の計算ミス修正
730c730
<     image->depth > 8 ? GetFITSPixelRange(image->depth)/2.0 : 0.0);
---
>     image->depth > 8 ? (GetFITSPixelRange(image->depth)+1)/2.0 : 0.0);
  • coders/gif.c
1106c1106,1107
<               length;
---
>               extent,
>               offset;
1108,1110d1108
<             /*
<               Read comment extension.
<             */
1112c1110,1111
<             for (length=0; ; length+=count)
---
>             extent=MagickPathExtent;
>             for (offset=0; ; offset+=count)
1118c1117,1127
<               (void) ConcatenateString(&comments,(const char *) buffer);
---
>               if ((count+offset+MagickPathExtent) >= (ssize_t) extent)
>                 {
>                   extent<<=1;
>                   comments=(char *) ResizeQuantumMemory(comments,extent+
>                     MagickPathExtent,sizeof(*comments));
>                   if (comments == (char *) NULL)
>                     ThrowGIFException(ResourceLimitError,
>                       "MemoryAllocationFailed");
>                 }
>               (void) CopyMagickString(&comments[offset],(char *) buffer,extent-
>                 offset);
1739,1740c1748
<         if ((LocaleCompare(write_info->magick,"GIF87") != 0) &&
<             (value != (const char *) NULL))
---
>         if (value != (const char *) NULL)
  • coders/heic.c
218c218
<       void
---
>       unsigned char
229,230c229,230
<       exif_buffer=AcquireMagickMemory(exif_size);
<       if (exif_buffer != NULL)
---
>       exif_buffer=(unsigned char*) AcquireMagickMemory(exif_size);
>       if (exif_buffer != (unsigned char*) NULL)
239c239,243
<               profile=BlobToStringInfo(exif_buffer,exif_size);
---
>               // The first 4 byte should be skipped since they indicate the
>               // offset to the start of the TIFF header of the Exif data.
>               profile=(StringInfo*) NULL;
>               if (exif_size > 8)
>                 profile=BlobToStringInfo(exif_buffer+4,exif_size-4);
375,376c375,376
<         count=ReadBlob(image,length,png+16);
<         if (count != (ssize_t) length)
---
>         count=ReadBlob(image,length-16,png+16);
>         if (count != (ssize_t) (length-16))
  • coders/jpeg.c
    • option 変数の再利用を辞めて、場所毎に変数名を分けた。
    • dct-method 未指定で quality が 90 以下の場合 JDCT_IFAST を使う。
1034a1035
>     *dct_method,
1238,1241c1239,1241
<   jpeg_info.dct_method=JDCT_FLOAT;
<   option=GetImageOption(image_info,"jpeg:dct-method");
<   if (option != (const char *) NULL)
<     switch (*option)
---
>   dct_method=GetImageOption(image_info,"jpeg:dct-method");
>   if (dct_method != (const char *) NULL)
>     switch (*dct_method)
1246c1246
<         if (LocaleCompare(option,"default") == 0)
---
>         if (LocaleCompare(dct_method,"default") == 0)
<略>
>   if ((dct_method == (const char *) NULL) && (quality <= 90))
>     jpeg_info.dct_method=JDCT_IFAST;
  • coders/miff.c
    • 型指定の修正
183a184,186
>   magick_attribute((__malloc__));
>
> static void *AcquireBZIPMemory(void *context,int items,int size)
190a194,196
>   magick_attribute((__malloc__));
>
> static void *AcquireLZMAMemory(void *context,size_t items,size_t size)
197a204,206
>   unsigned int size) magick_attribute((__malloc__));
>
> static voidpf AcquireZIPMemory(voidpf context,unsigned int items,
  • coders/msl.c
    • MSDWarning と MSLError の attribute 指定(print書式を間違えると警告がでるのと同じ?)
7568a7569,7571
>   magick_attribute((__format__ (__printf__,2,3)));
>
> static void MSLWarning(void *context,const char *format,...)
7600a7604,7606
>   magick_attribute((__format__ (__printf__,2,3)));
>
> static void MSLError(void *context,const char *format,...)
|<<

** ChangeLog

>||
2018-12-01  6.9.10-15 Cristy  <quetzlzacatenango@image...>
  * Release ImageMagick version 6.9.10-15, GIT revision 14011:ddd5bd95d:20181201

IO_SoundFont 1.1.0 をリリースしました

↑これの続き。

% composer require yoya/io_soundfont

openpear はもういないので、composer 対応しました。

実行結果

% php  vendor/yoya/io_soundfont/sample/sftree.php emuaps_8mb.sf2
Bank: idx:0
  Preset: idx:43 name:'Contra Bass' bag:0=>1
    presetBag: ndx:0
      Mod: idx:0
        Type:0 P:0 D:0 CC:1 Index:21 DestOper:34(attackVolEnv) Amount:9020 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:1
        Type:0 P:0 D:0 CC:1 Index:23 DestOper:28(decayModEnv) Amount:2776 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:2
        Type:0 P:0 D:0 CC:1 Index:23 DestOper:26(attackModEnv) Amount:17000 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:3
        Type:0 P:0 D:0 CC:1 Index:24 DestOper:22(freqModLFO) Amount:-311 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:4
        Type:1 P:0 D:0 CC:1 Index:24 DestOper:5(modLfoToPitch) Amount:-4 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:5
        Type:1 P:0 D:0 CC:1 Index:23 DestOper:38(releaseVolEnv) Amount:3122 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:6
        Type:1 P:0 D:0 CC:1 Index:22 DestOper:9(initialFilterQ) Amount:627 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:7
        Type:1 P:0 D:0 CC:1 Index:23 DestOper:29(sustainModEnv) Amount:1000 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:8
        Type:0 P:0 D:0 CC:1 Index:23 DestOper:8(initialFilterFc) Amount:-2480 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:9
        Type:0 P:0 D:0 CC:1 Index:23 DestOper:11(modEnvToFilterFc) Amount:2449 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:10
        Type:0 P:0 D:1 CC:0 Index:2(Note-On Velocity) DestOper:8(initialFilterFc) Amount:-2480 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0      Mod: idx:11
        Type:1 P:0 D:0 CC:1 Index:21 DestOper:8(initialFilterFc) Amount:-13500 AmdSrcOper:Type:0 P:0 D:0 CC:0 Index:0(No Controler)
 TransOper:0    presetBag: ndx:1
      Gen: idx:0
        genOper:41(instrument) Amount:0
          name:'Contrabass' bagNdx: 0=>5
<略>