Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP4
ImageMagick.24648
ImageMagick-CVE-2019-13454.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ImageMagick-CVE-2019-13454.patch of Package ImageMagick.24648
diff --git a/MagickCore/layer.c b/MagickCore/layer.c index b520e9247d..48632885ae 100644 --- a/MagickCore/layer.c +++ b/MagickCore/layer.c @@ -1584,45 +1584,47 @@ MagickExport void OptimizeImageTransparency(const Image *image, % o exception: return any errors or warnings in this structure. % */ -MagickExport void RemoveDuplicateLayers(Image **images, - ExceptionInfo *exception) +MagickExport void RemoveDuplicateLayers(Image **images,ExceptionInfo *exception) { - register Image - *curr, - *next; - RectangleInfo bounds; + register Image + *image, + *next; + assert((*images) != (const Image *) NULL); assert((*images)->signature == MagickCoreSignature); if ((*images)->debug != MagickFalse) - (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*images)->filename); + (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", + (*images)->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickCoreSignature); - - curr=GetFirstImageInList(*images); - for (; (next=GetNextImageInList(curr)) != (Image *) NULL; curr=next) + image=GetFirstImageInList(*images); + for ( ; (next=GetNextImageInList(image)) != (Image *) NULL; image=next) { - if ( curr->columns != next->columns || curr->rows != next->rows - || curr->page.x != next->page.x || curr->page.y != next->page.y ) + if ((image->columns != next->columns) || (image->rows != next->rows) || + (image->page.x != next->page.x) || (image->page.y != next->page.y)) continue; - bounds=CompareImagesBounds(curr,next,CompareAnyLayer,exception); - if ( bounds.x < 0 ) { - /* - the two images are the same, merge time delays and delete one. - */ - size_t time; - time = curr->delay*1000/curr->ticks_per_second; - time += next->delay*1000/next->ticks_per_second; - next->ticks_per_second = 100L; - next->delay = time*curr->ticks_per_second/1000; - next->iterations = curr->iterations; - *images = curr; - (void) DeleteImageFromList(images); - } + bounds=CompareImagesBounds(image,next,CompareAnyLayer,exception); + if (bounds.x < 0) + { + /* + Two images are the same, merge time delays and delete one. + */ + size_t + time; + + time=1000*image->delay*PerceptibleReciprocal(image->ticks_per_second); + time+=1000*next->delay*PerceptibleReciprocal(next->ticks_per_second); + next->ticks_per_second=100L; + next->delay=time*image->ticks_per_second/1000; + next->iterations=image->iterations; + *images=image; + (void) DeleteImageFromList(images); + } } - *images = GetFirstImageInList(*images); + *images=GetFirstImageInList(*images); } /*
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor