From 760b36f26f118b84abd9b8e6c33ca41092c69636 Mon Sep 17 00:00:00 2001 From: cristy Date: Fri, 12 Jul 2013 12:31:57 +0000 Subject: [PATCH] --- MagickCore/geometry.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/MagickCore/geometry.c b/MagickCore/geometry.c index b7e27d66c..b268ec981 100644 --- a/MagickCore/geometry.c +++ b/MagickCore/geometry.c @@ -1381,8 +1381,23 @@ MagickExport MagickStatusType ParseMetaGeometry(const char *geometry,ssize_t *x, scale.y=(double) former_height/(distance/sqrt((double) area)); if ((scale.x < (double) *width) || (scale.y < (double) *height)) { - *width=(size_t) (former_width/(distance/sqrt(area))+0.5); - *height=(size_t) (former_height/(distance/sqrt(area))+0.5); + scale.x=MagickMax((size_t) floor(scale.x+0.5),1.0); + scale.y=MagickMax((size_t) floor(scale.y+0.5),1.0); + if (scale.x > 1 && scale.y > 1 && scale.x * scale.y > geometry_info.rho) + { + if (scale.x > scale.y) + { + scale.x=(double) former_width/((double) former_height/--scale.y); + scale.x=MagickMax((size_t) floor(scale.x+0.5),1.0); + } + else + { + scale.y=(double) former_height/((double) former_width/--scale.x); + scale.y=MagickMax((size_t) floor(scale.y+0.5),1.0); + } + } + *width=(size_t) scale.x; + *height=(size_t) scale.y; } former_width=(*width); former_height=(*height); -- 2.40.0