Skip to content

Commit

Permalink
uses the PerceptibleReciprocal() to prevent the divide-by-zero from o…
Browse files Browse the repository at this point in the history
…ccurring (#3194)

Co-authored-by: Zhang Xiaohui <ruc_zhangxiaohui@163.com>
  • Loading branch information
hifoolno and Zhang Xiaohui committed Feb 3, 2021
1 parent 74f8868 commit 329dd52
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions MagickCore/visual-effects.c
Original file line number Diff line number Diff line change
Expand Up @@ -1005,11 +1005,11 @@ MagickExport Image *ImplodeImage(const Image *image,const double amount,
center.y=0.5*canvas_image->rows;
radius=center.x;
if (canvas_image->columns > canvas_image->rows)
scale.y=(double) canvas_image->columns/(double) canvas_image->rows;
scale.y=(double) canvas_image->columns*PerceptibleReciprocal((double) canvas_image->rows);
else
if (canvas_image->columns < canvas_image->rows)
{
scale.x=(double) canvas_image->rows/(double) canvas_image->columns;
scale.x=(double) canvas_image->rows*PerceptibleReciprocal((double) canvas_image->columns);
radius=center.y;
}
/*
Expand Down Expand Up @@ -1085,10 +1085,10 @@ MagickExport Image *ImplodeImage(const Image *image,const double amount,
*/
factor=1.0;
if (distance > 0.0)
factor=pow(sin(MagickPI*sqrt((double) distance)/radius/2),-amount);
factor=pow(sin(MagickPI*sqrt((double) distance)*PerceptibleReciprocal(radius)/2),-amount);
status=InterpolatePixelChannels(canvas_image,interpolate_view,
implode_image,method,(double) (factor*delta.x/scale.x+center.x),
(double) (factor*delta.y/scale.y+center.y),q,exception);
implode_image,method,(double) (factor*delta.x*PerceptibleReciprocal(scale.x)+center.x),
(double) (factor*delta.y*PerceptibleReciprocal(scale.y)+center.y),q,exception);
if (status == MagickFalse)
break;
}
Expand Down

0 comments on commit 329dd52

Please sign in to comment.