ImageMagick-6.9.10-21差分

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

The latest release of ImageMagick is version 6.9.10-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.