From: Angus Leeming Date: Thu, 31 Oct 2002 11:14:13 +0000 (+0000) Subject: (Rob Lahaye): fix crash when clipping. X-Git-Tag: 1.6.10~18044 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=fb868c4aea63d17b162485824c5b68c88fc1f8d5;p=features.git (Rob Lahaye): fix crash when clipping. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5560 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index 380460268b..a9d0db9a9c 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,7 @@ +2002-10-31 Rob Lahaye + + * xformsImage.C (clip): fix crash caused by uint -> int nastiness. + 2002-10-29 Rob Lahaye * FormParagraph.[Ch]: diff --git a/src/frontends/xforms/xformsImage.C b/src/frontends/xforms/xformsImage.C index ff45269a31..c9fb7d35ea 100644 --- a/src/frontends/xforms/xformsImage.C +++ b/src/frontends/xforms/xformsImage.C @@ -280,12 +280,17 @@ void xformsImage::clip(Params const & params) // Bounds are unchanged. return; - // FIXME: these values are unsigned so this makes NO sense - - int const xoffset_l = std::max(0U, params.bb.xl); - int const xoffset_r = std::max(0U, image_->w - params.bb.xr); - int const yoffset_t = std::max(0U, image_->h - params.bb.yt); - int const yoffset_b = std::max(0U, params.bb.yb); + // flimage.h: image_ members w and h are of type int + // (though always >= 0) + // GraphicsParams.h: params.bb members xl, xr, yt and yb are of + // type unsigned int. + // We must, therefore, be careful... + int const xoffset_l = params.bb.xl; + int const yoffset_b = params.bb.yb; + int const xoffset_r = image_->w > params.bb.xr ? + image_->w - params.bb.xr : 0; + int const yoffset_t = image_->h > params.bb.yt ? + image_->h - params.bb.yt : 0; flimage_crop(image_, xoffset_l, yoffset_t, xoffset_r, yoffset_b); }