From fb868c4aea63d17b162485824c5b68c88fc1f8d5 Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Thu, 31 Oct 2002 11:14:13 +0000 Subject: [PATCH] (Rob Lahaye): fix crash when clipping. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5560 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/xforms/ChangeLog | 4 ++++ src/frontends/xforms/xformsImage.C | 17 +++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) 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); } -- 2.39.2