ImageMagick-6.9.10-27差分
ImageMagick-6.9.10-27差分
http://www.imagemagick.org/script/download.php
The latest release of ImageMagick is version 6.9.10-27
7 系同時リリースは ImageMagick-7.0.8-27
まとめ
- image.gif[2-3] のような scene geometry の処理を修正。
https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35435
気になる事
珍しく PerlMagick/t/input.fits に大量の差分がある。
差分
- subimage レンジ適切に扱う変更パッチ。 (例. image.gif[2-3]).
ChangeLog にない差分
- PerlMagick/t/input.fits
1,76c1 < SIMPLE = (よく分からないバイナリが大量に)
526a527,528 > profile_data, > profile_size, 630a633,634 > profile_data=0; > profile_size=0; 829,830c833,834 < (void) ReadBlobLSBLong(image); /* Profile data */ < (void) ReadBlobLSBLong(image); /* Profile size */ --- > profile_data=(MagickOffsetType) ReadBlobLSBLong(image); > profile_size=(MagickOffsetType) ReadBlobLSBLong(image); 1451a1456,1497 > Read embeded ICC profile > */ > if ((bmp_info.colorspace == 0x4D424544L) && (profile_data > 0) && > (profile_size > 0)) > { > StringInfo > *profile; > > unsigned char > *datum; > > offset=start_position+14+profile_data; > if ((offset < TellBlob(image)) || > (SeekBlob(image,offset,SEEK_SET) != offset) || > (GetBlobSize(image) < (MagickSizeType) (offset+profile_size))) > ThrowReaderException(CorruptImageError,"ImproperImageHeader"); > profile=AcquireStringInfo((size_t) profile_size); > if (profile == (StringInfo *) NULL) > ThrowReaderException(CorruptImageError,"MemoryAllocationFailed"); > datum=GetStringInfoDatum(profile); > if (ReadBlob(image,(size_t) profile_size,datum) == (ssize_t) profile_size) > { > MagickOffsetType > profile_size_orig; > > /* > Trimming padded bytes. > */ > profile_size_orig=(MagickOffsetType) datum[0] << 24; > profile_size_orig|=(MagickOffsetType) datum[1] << 16; > profile_size_orig|=(MagickOffsetType) datum[2] << 8; > profile_size_orig|=(MagickOffsetType) datum[3]; > if (profile_size_orig < profile_size) > SetStringInfoLength(profile,(size_t) profile_size_orig); > if (image->debug != MagickFalse) > (void) LogMagickEvent(CoderEvent,GetMagickModule(), > "Profile: ICC, %u bytes",(unsigned int) profile_size_orig); > (void) SetImageProfile(image,"icc",profile); > } > profile=DestroyStringInfo(profile); > } > /*
ChangeLog
2019-02-09 6.9.10-27 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-27, GIT revision 14197:4e00248f4:20190209 2019-02-09 6.9.10-27 Cristy <quetzlzacatenango@image...> * Mod patch to properly handle subimage ranges (e.g. image.gif[2-3]).
ImageMagick-6.9.10-26差分
ImageMagick-6.9.10-26差分
http://www.imagemagick.org/script/download.php
The latest release of ImageMagick is version 6.9.10-26
7 系同時リリースは ImageMagick-7.0.8-26
まとめ
- issue の解決
差分
- Fixed a number of issues
ChangeLog にない差分
1646a1647 > profile_data, > profile_size, > profile_size_pad; > 2197a2203,2213 > profile_data=0; > profile_size=0; > profile_size_pad=0; > if (profile) { > profile_data=(MagickOffsetType) bmp_info.file_size-14; /* from head of BMP info header */ > profile_size=(MagickOffsetType) GetStringInfoLength(profile); > if (profile_size%4) { > profile_size_pad=4-(profile_size%4); > } > bmp_info.file_size+=profile_size+profile_size_pad; > } 2239a2256,2258 > if (profile) { > (void) WriteBlobLSBLong(image,0x4D424544U); /* PROFILE_EMBEDDED */ > } else { 2240a2260 > } 2303,2304c2323,2325 < (void) WriteBlobLSBLong(image,0x00); /* dummy profile data */ < (void) WriteBlobLSBLong(image,0x00); /* dummy profile length */ --- > (void) WriteBlobLSBLong(image,(unsigned int) profile_data); > (void) WriteBlobLSBLong(image,(unsigned int) (profile_size+ > profile_size_pad)); 2354a2376,2385 > if (profile) { > if (image->debug != MagickFalse) > (void) LogMagickEvent(CoderEvent,GetMagickModule(), > " Profile: %g bytes",(double) profile_size+profile_size_pad); > (void) WriteBlob(image,(size_t) profile_size,GetStringInfoDatum(profile)); > if (profile_size_pad) { /* padding for 4 bytes multiple */ > (void) WriteBlob(image,(size_t) profile_size_pad,(unsigned char *) > "\0\0\0"); > } > }
3784c3784,3791 < (void) SetImageProperty(image,text[i].key,value); --- > { > char > key[MaxTextExtent]; > > (void) FormatLocaleString(key,MaxTextExtent,"png:%s", > text[i].key); > (void) SetImageProperty(image,key,value); > } (略) 3854c3910 < value=strtol(point,&p,10); --- > value=(ssize_t) strtol(point,&p,10); (略)
268a274,356 > static Image *RenderSVGImage(const ImageInfo *image_info,Image *image, > ExceptionInfo *exception)
- coders/tiff.c
- WRITE 処理での PHOTOMETRIC_SEPARATED の考慮漏れの修正
3652a3653 > (photometric == PHOTOMETRIC_SEPARATED) || 3674a3676 > (photometric == PHOTOMETRIC_SEPARATED) || 3688a3691 > (photometric == PHOTOMETRIC_SEPARATED) || 3699a3703 > (photometric == PHOTOMETRIC_SEPARATED) || 3714a3719 > (photometric == PHOTOMETRIC_SEPARATED) ||
- coders/webp.c
- libweb-0.6.0 から追加された use_sharp_yuv を使えるようにするはずが。。。
- 現状 DECODER_ABI は最新が 0208 だし、RGB=>YUV の encode 機能なので ENCODER_ABI (こちらは 0.6.0 から 020e)と間違えてるっぽい。あとで修正PR送っとく。
- libweb-0.6.0 から追加された use_sharp_yuv を使えるようにするはずが。。。
735a736,740 > #if WEBP_DECODER_ABI_VERSION >= 0x020e > value=GetImageOption(image_info,"webp:use-sharp-yuv"); > if (value != (char *) NULL) > configure.use_sharp_yuv=StringToInteger(value);
- magick/constitute.c
- ReadImage で scene geometry なのに "%d-%d" 形式になってない場合だけ CloneImages で作り直す。
636a637,641 > int > first_scene, > last_scene, > n; > 639a645,647 > n=sscanf(read_info->scenes,"%d-%d",&first_scene,&last_scene); > if (n != 2) > { 643c651,652 < "SubimageSpecificationReturnsNoImages","`%s'",read_info->filename); --- > "SubimageSpecificationReturnsNoImages","`%s'", > read_info->filename); 649a659 > } diff -rBw ImageMagick-6.9.10-25/magick/draw.c ImageMagick-6.9.10-26/magick/draw.c 2462c2462 < return(status == 0 ? MagickFalse : MagickTrue); --- > return(status);
- magick/draw.c
- シンプルにした。
2462c2462 < return(status == 0 ? MagickFalse : MagickTrue); --- > return(status);
- magick/locale.c
- リファイン。nt-base.h とも絡む。
288d287 < #if defined(MAGICKCORE_HAVE_NEWLOCALE) 291,294d289 < #elif defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__MINGW32__) < if (c_locale != (locale_t) NULL) < _free_locale(c_locale); < #endif 1529,1530c1524,1525 < if (c_locale == (locale_t) NULL) < return(tolower(c)); --- > #if defined(MAGICKCORE_LOCALE_SUPPORT) > if (c_locale != (locale_t) NULL) 1531a1527,1528 > #endif > return(tolower(c)); 1665,1666c1662,1663 < if (c_locale == (locale_t) NULL) < return(toupper(c)); --- > #if defined(MAGICKCORE_LOCALE_SUPPORT) > if (c_locale != (locale_t) NULL) 1667a1665,1666 > #endif > return(toupper(c));
- magick/nt-base.h
- Windows 用に define で freelocale に統一。
103a104,106 > #if !defined(freelocale) > # define freelocale _free_locale > #endif
- magick/pixel-accessor.h
- キャスト
114c114 < return(0); --- > return((Quantum) 0);
ChangeLog
2019-02-03 6.9.10-27 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-27, GIT revision 14180:153da6bd6:20190203 2019-02-02 6.9.10-26 Cristy <quetzlzacatenango@image...> * Fixed a number of issues (reference https://github.com/ImageMagick/ImageMagick/issues).
ImageMagick-6.9.10-25差分
ImageMagick-6.9.10-25差分
http://www.imagemagick.org/script/download.php
The latest release of ImageMagick is version 6.9.10-25
7 系同時リリースは ImageMagick-7.0.8-25
まとめ
気になる事
- tolower/toupper の代わりに Locale 関数の LocaleLowercase/LocaleUppercase を呼ぶようにした箇所が沢山ある。
- これで大文字や小文字への変換が直感的になるケースがある?
You may not use this file except in compliance with the License.
obtain a copy of the License at
これを
You may not use this file except in compliance with the License. You may
obtain a copy of the License at
に書き換えてる。大量に。
ChangeLog にない差分
- coders/bmp.c
- 画像が途中で途切れてないかのチェックの計算ミス。ここスルーしても別の箇所でエラーになるので恐らく実害ない。
- bmp_colormap のメモリ確保に失敗した時に、pixel_info を解放してなかった。これも意図的には作るのは難しい。
967a968,969 > if ((MagickSizeType) (length/256) > GetBlobSize(image)) > ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile"); 971,972d972 < if ((MagickSizeType) length > GetBlobSize(image)) < ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile"); 2321a2322,2323 > { > pixel_info=RelinquishVirtualMemory(pixel_info); 2322a2325 > }
- coders/dib.c
- dib_colormap のメモリ確保出来ない時に、 pixels がメモリリークしてた。(カラーマップは固定でそんな大きくないので意図的に発生させるのは難しい。実害はなさそう)
1382a1383,1384 > { > pixels=(unsigned char *) RelinquishMagickMemory(pixels); 1383a1386 > }
- coders/fits.c
- tolower の代わりに Locale関数の方を呼ぶ
334c334 < keyword[i]=tolower((int) ((unsigned char) keyword[i])); --- > keyword[i]=LocaleLowercase((int) ((unsigned char) keyword[i]));
- coders/json.c
- tolower の代わりに Locale関数の方を呼ぶ
1113c1113 < *target=(char) toupper((int) ((unsigned char) *target)); --- > *target=(char) LocaleUppercase((int) ((unsigned char) *target));
- coders/meta.c
181c181< i=toupper(i);
-
- -
> i=LocaleUppercase(i);
184c184< j=toupper(j);
-
- -
> j=LocaleUppercase(j);
193c193< return(toupper*1;
-
- -
> return(LocaleUppercase*2;
|
- coders/psd.c
- ReadPSDLayersInternal で top/left の右下に bottom/right がある事のチェックを追加。
1639,1640c1639,1642 < x, < y; --- > top, > left, > bottom, > right; 1645,1650c1647,1660 < layer_info[i].page.y=(ssize_t) ReadBlobSignedLong(image); < layer_info[i].page.x=(ssize_t) ReadBlobSignedLong(image); < y=(ssize_t) ReadBlobSignedLong(image); < x=(ssize_t) ReadBlobSignedLong(image); < layer_info[i].page.width=(size_t) (x-layer_info[i].page.x); < layer_info[i].page.height=(size_t) (y-layer_info[i].page.y); --- > top=(ssize_t) ReadBlobSignedLong(image); > left=(ssize_t) ReadBlobSignedLong(image); > bottom=(ssize_t) ReadBlobSignedLong(image); > right=(ssize_t) ReadBlobSignedLong(image); > if ((right < left) || (bottom < top)) > { > layer_info=DestroyLayerInfo(layer_info,number_layers); > ThrowBinaryException(CorruptImageError,"ImproperImageHeader", > image->filename); > } > layer_info[i].page.y=top; > layer_info[i].page.x=left; > layer_info[i].page.width=(size_t) (right-left); > layer_info[i].page.height=(size_t) (bottom-top); 2707a2718,2719 > compressed_pixels=(unsigned char *) RelinquishMagickMemory( > compressed_pixels);
- coders/sixel.c
- sixel_decode で失敗した時に sixel_pixels のメモリ解放を忘れてた。メモリリークになりそう?
1058a1059 > sixel_pixels=(unsigned char *) RelinquishMagickMemory(sixel_pixels);
- coders/tiff.c
- 主に宣言型の整理。VMS で JPEGCompression を有効にした。(なんで VMS だけ?)
- 動作に影響がないリファイン。ORIENTATION_TOPLEFT を初期値的に入れて image->orientation がある時に上書きしてたけど、image-orientation 処理の else 説で TOPLEFT を入れるようにした。
41a42,44 > #ifdef __VMS > #define JPEG_SUPPORT 1 > #endif 90c93 < # include "tiffconf.h" --- > # include <tiffconf.h> 92,93c95,96 < # include "tiff.h" < # include "tiffio.h" --- > # include <tiff.h> > # include <tiffio.h> 230,231c233 < /* Setting the mode to a value that won't change the colorspace */ < info->mode=10; --- > info->mode=10; /* Set mode to a value that won't change the colorspace */ 329c331 < static inline size_t WriteLSBLong(FILE *file,const size_t value) --- > static inline size_t WriteLSBLong(FILE *file,const unsigned int value) 396a399,400 > if (length != 10) > ThrowReaderException(CorruptImageError,"UnexpectedEndOfFile"); 407c411 < length=WriteLSBLong(file,(size_t) strip_offset); --- > length=WriteLSBLong(file,(unsigned int) strip_offset); 409c413 < length=WriteLSBLong(file,(size_t) image_info->orientation); --- > length=WriteLSBLong(file,(unsigned int) image_info->orientation); 416c420 < length=WriteLSBLong(file,(size_t) (strip_offset-8)); --- > length=WriteLSBLong(file,(unsigned int) (strip_offset-8)); 418c422 < length=WriteLSBLong(file,(size_t) (strip_offset-8)); --- > length=WriteLSBLong(file,(unsigned int) (strip_offset-8)); 421c425 < length=WriteLSBLong(file,(size_t) (image->x_resolution+0.5)); --- > length=WriteLSBLong(file,(unsigned int) image->x_resolution); 1044c1048 < static void TIFFReadPhotoshopLayers(Image* image,const ImageInfo *image_info, --- > static void TIFFReadPhotoshopLayers(const ImageInfo *image_info,Image *image, 1055a1060,1062 > ImageInfo > *clone_info; > 1096c1103,1106 < (void) ReadPSDLayers(layers,image_info,&info,MagickFalse,exception); --- clone_info=CloneImageInfo(image_info); > clone_info->number_scenes=0; > (void) ReadPSDLayers(layers,clone_info,&info,MagickFalse,exception); > clone_info=DestroyImageInfo(clone_info); 2177c2187 < TIFFReadPhotoshopLayers(image,image_info,exception); --- > TIFFReadPhotoshopLayers(image_info,image,exception); 3579d3588 < (void) TIFFSetField(tiff,TIFFTAG_ORIENTATION,ORIENTATION_TOPLEFT); 3787a3797,3798 > else > (void) TIFFSetField(tiff,TIFFTAG_ORIENTATION,ORIENTATION_TOPLEFT);
- coders/ttf.c
- 開発中の試行錯誤?
54a55 > #include "magick/resource_.h" 255c256,257 < draw_info->font=AcquireString(image->filename); --- > draw_info->font=AcquireString(""); > (void) ImageToFile(image,draw_info->font,exception); 289a292 > (void) RelinquishUniqueFileResource(draw_info->font);
- /magick/configure.c
- AddConfigureKey で処理を整理。
(ごっそり変わってる)
- magick/display.c
- toupper で Locale 関数を使う。
14482c14482,14483 < class_hints->res_class[0]=(char) toupper((int) class_hints->res_class[0]); --- > class_hints->res_class[0]=(char) LocaleUppercase((int) > class_hints->res_class[0]);
- magick/fx.c
- CharcoalImage で ClampImage をはじめに追加。あとエラーハンドリングを真面目にやる。(どれも失敗する事なさそうなメソッドだけど)
93a94 > #include "magick/threshold.h" 630a632,634 > MagickBooleanType > status; > 639a644,646 > charcoal_image=(Image *) NULL; > status=ClampImage(edge_image); > if (status != MagickFalse) 644,646c651,657 < (void) NormalizeImage(charcoal_image); < (void) NegateImage(charcoal_image,MagickFalse); < (void) GrayscaleImage(charcoal_image,image->intensity); --- > status=NormalizeImage(charcoal_image); > if (status != MagickFalse) > status=NegateImage(charcoal_image,MagickFalse); > if (status != MagickFalse) > status=GrayscaleImage(charcoal_image,image->intensity); > if (status == MagickFalse) > charcoal_image=DestroyImage(charcoal_image); 4631,4633c4642,4648 < (void) NormalizeImage(dodge_image); < (void) NegateImage(dodge_image,MagickFalse); < (void) TransformImage(&dodge_image,(char *) NULL,"50%"); --- > status=ClampImage(dodge_image); > if (status != MagickFalse) > status=NormalizeImage(dodge_image); > if (status != MagickFalse) > status=NegateImage(dodge_image,MagickFalse); > if (status != MagickFalse) > status=TransformImage(&dodge_image,(char *) NULL,"50%");
ChangeLog
2019-01-27 6.9.10-25 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-25, GIT revision 14167:183ec9d88:20190127 2019-01-19 6.9.10-25 Cristy <quetzlzacatenango@image...> * Eliminate spurious font warning (reference https://github.com/ImageMagick/ImageMagick/issues/1458). * Support HEIC EXIF & XMP profiles.
ImageMagick-6.9.10-24差分
ImageMagick-6.9.10-24差分
http://www.imagemagick.org/script/download.php
The latest release of ImageMagick is version 6.9.10-24
7 系同時リリースは ImageMagick-7.0.8-24
まとめ
気になる事
差分
- Support -clahe option real clip limit
- ShadeImage() can return negative pixels, clamp to range
- Annotate with negative offsets no longer renders slanted text.
ChangeLog にない差分
ChangeLog
2019-01-12 6.9.10-24 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-24, GIT revision 14130:70079ed45:20190112 2019-01-08 6.9.10-24 Cristy <quetzlzacatenango@image...> * Support -clahe option real clip limit (reference https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=35292). * ShadeImage() can return negative pixels, clamp to range (reference https://github.com/ImageMagick/ImageMagick/issues/1319). * Annotate with negative offsets no longer renders slanted text.
ImageMagick-6.9.10-23差分
ImageMagick-6.9.10-23差分
http://www.imagemagick.org/script/download.php
The latest release of ImageMagick is version 6.9.10-23
7 系同時リリースは ImageMagick-7.0.8-23
まとめ
気になる事
差分
- CacheInfo destructor は DestroyPixelStream() で(バイト)境界が揃うべき。
ChangeLog にない差分
- coders/bgr.c
986,987c986,987 < image=DestroyImageList(image); < return((Image *) NULL); --- > status=MagickFalse; > break; diff ImageMagick-6.9.10-2/coders/bmp.c ImageMagick-6.9.10-3/coders/bmp.c 972,973c972,973 < pixel_info=AcquireVirtualMemory((size_t) image->rows, < MagickMax(bytes_per_line,image->columns+256UL)*sizeof(*pixels)); --- > pixel_info=AcquireVirtualMemory(image->rows,MagickMax(bytes_per_line, > image->columns+256UL)*sizeof(*pixels)); 993,994c993,994 < pixel_info=AcquireVirtualMemory((size_t) image->rows, < MagickMax(bytes_per_line,image->columns+256UL)*sizeof(*pixels)); --- > pixel_info=AcquireVirtualMemory(image->rows,MagickMax(bytes_per_line, > image->columns+256UL)*sizeof(*pixels)); 1860,1861c1860,1861 < pixel_info=AcquireVirtualMemory((size_t) bmp_info.image_size, < sizeof(*pixels)); --- > pixel_info=AcquireVirtualMemory(image->rows,MagickMax(bytes_per_line, > image->columns+256UL)*sizeof(*pixels)); diff ImageMagick-6.9.10-2/coders/cmyk.c ImageMagick-6.9.10-3/coders/cmyk.c 1144,1145c1144,1145 < image=DestroyImageList(image); < return((Image *) NULL); --- > status=MagickFalse; > break;
ChangeLog
2019-01-01 6.9.10-23 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-23, GIT revision 14106:df6887c14:20190101 2019-01-01 6.9.10-23 Cristy <quetzlzacatenango@image...> * CacheInfo destructor must be aligned in DestroyPixelStream().
ImageMagick-6.9.10-22差分
ImageMagick-6.9.10-21差分 - yoyaのメモの続き
The latest release of ImageMagick is version 6.9.10-22
- 7 系同時リリースは ImageMagick-7.0.8-22
まとめ
- geometry で負の回転をサポート (例. -10x-10+10+10)
- gravity つき crop のあとで 期待する canvas オフセットを返す
- HEIC コーダーの(exception引数による)コンパイルエラーを修正 (6 系の -21 は heic 有効だとビルド出来なかった)
気になる事
差分
geometry で負の回転をサポート (例. -10x-10+10+10)
-
- magick/geometry.c
1122c1122,1124 < ((flags & PsiValue) == 0)) --- > ((flags & XiNegative) != 0)) > { > if ((flags & PsiValue) == 0) 1131a1134,1159 > else > if ((flags & ChiValue) == 0) > { > /* > Support negative height values (e.g. 30x-20+10). > */ > geometry_info->sigma=geometry_info->xi; > geometry_info->xi=geometry_info->psi; > flags|=SigmaValue; > flags|=XiValue; > flags&=(~PsiValue); > } > else > { > /* > Support negative height values (e.g. 30x-20+10+10). > */ > geometry_info->sigma=geometry_info->xi; > geometry_info->xi=geometry_info->psi; > geometry_info->psi=geometry_info->chi; > flags|=SigmaValue; > flags|=XiValue; > flags|=PsiValue; > flags&=(~ChiValue); > } > }
320c320 < SetImageProperty(image, "exif:Orientation", "1", exception); --- > SetImageProperty(image, "exif:Orientation", "1");
ChangeLog にない差分
- coders/caption.c
169a170 > (void) memset(&metrics,0,sizeof(metrics)); diff -rwb ImageMagick-6.9.10-21/coders/cut.c ImageMagick-6.9.10-22/coders/cut.c 432,435d431 < if (palette != NULL) < palette=DestroyImage(palette); < if (clone_info != NULL) < clone_info=DestroyImageInfo(clone_info);
ChangeLog
2018-12-30 6.9.10-22 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-22, GIT revision 14098:7054d2569:20181230 2018-12-29 6.9.10-22 Cristy <quetzlzacatenango@image...> * Support negative rotations in a geometry (e.g. -10x-10+10+10). * Return expected canvas offset after a crop with gravity. * Fix HEIC coder compile exception.
ImageMagick-6.9.10-21差分
ImageMagick-6.9.10-20差分 - yoya's diaryの続き
The latest release of ImageMagick is version 6.9.10-21
- 7 系同時リリースは ImageMagick-7.0.8-21
まとめ
- SeekBlog を off_t が表現出来るオフセットとする
気になる事
- メモリのアラインメントをとる処理が追加されてるので、もしかしたら高速化?
差分
- Check to ensure SeekBlob() offset can be represented in an off_t.
- magick/blob.c
276c276,277 < count=write(file,(const char *) blob+i,MagickMin(length-i,SSIZE_MAX)); --- > count=write(file,(const char *) blob+i,MagickMin(length-i,(size_t) > SSIZE_MAX)); 1190c1191 < count=read(file,blob+i,MagickMin(*length-i,SSIZE_MAX)); --- > count=read(file,blob+i,MagickMin(*length-i,(size_t) SSIZE_MAX)); 4297a4299,4304 > if (((offset > 0) && (blob_info->offset > (SSIZE_MAX-offset))) || > ((offset < 0) && (blob_info->offset < (-SSIZE_MAX-offset)))) > { > errno=EOVERFLOW; > return(-1); > }
ChangeLog にない差分
- coders/heic.c
- Orientation 対応
coders/heic.c 314a315,320 > /* > There is a discrepancy between EXIF data and the actual orientation of > image pixels. ReadImage processes "exif:Orientation" expecting pixels to b e > oriented accordingly. However, in HEIF the pixels are NOT rotated. > */ > SetImageProperty(image, "exif:Orientation", "1", exception); || - magick/cache.c -- メモリのアラインメント >|c| 360c360,362 < cache_info=(CacheInfo *) AcquireCriticalMemory(sizeof(*cache_info)); --- > cache_info=(CacheInfo *) AcquireAlignedMemory(1,sizeof(*cache_info)); > if (cache_info == (CacheInfo *) NULL) > ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); 1196c1198 < cache_info=(CacheInfo *) RelinquishMagickMemory(cache_info); --- > cache_info=(CacheInfo *) RelinquishAlignedMemory(cache_info); 5098,5099c5100,5101 < const CacheInfo *magick_restrict cache_info,NexusInfo *nexus_info, < ExceptionInfo *exception) --- > const CacheInfo *magick_restrict cache_info,const MagickSizeType length, > NexusInfo *nexus_info,ExceptionInfo *exception) 5101c5103 < if (nexus_info->length != (MagickSizeType) ((size_t) nexus_info->length)) --- > if (length != (MagickSizeType) ((size_t) length)) 5102a5105,5106 > nexus_info->length=0; > nexus_info->mapped=MagickFalse; <略>
- magick/memory.c
- メモリのアラインメント
246a247 > #define AlignedPowerOf2(x) ((((x) - 1) & (x)) == 0) 273a275,285 > if ((alignment == 0) || (alignment % sizeof(void *) != 0) || > (AlignedPowerOf2(alignment/sizeof (void *)) == 0)) > { > errno=EINVAL; > return((void *) NULL); > } > if (size > (SIZE_MAX-alignment-sizeof(void *)-1)) > { > errno=ENOMEM; > return((void *) NULL); > }
ChangeLog
2018-12-27 6.9.10-21 Cristy <quetzlzacatenango@image...> * Release ImageMagick version 6.9.10-21, GIT revision 14088:1961662c1:20181227 2018-12-27 6.9.10-21 Cristy <quetzlzacatenango@image...> * Check to ensure SeekBlob() offset can be represented in an off_t.