From 3ea3dc0347ecf0fd2df4b1ca25666e2a78da150c Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 27 May 2013 14:33:28 +0200 Subject: [PATCH] patch: unsharp-mask-crash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit a8748094ec325bfeb856c603ece8c2026f0968ea Author: Téo Mazars Date: Sun Apr 7 22:29:56 2013 +0200 Bug 695418 - Unsharp mask crashes for large radii Make sure we are working on the image range (cherry picked from commit 35cc644765c553b6feb24bd56133b6f9f74ed5e4) --- plug-ins/common/unsharp-mask.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plug-ins/common/unsharp-mask.c b/plug-ins/common/unsharp-mask.c index e6e3ad8..998c96e 100644 --- a/plug-ins/common/unsharp-mask.c +++ b/plug-ins/common/unsharp-mask.c @@ -369,7 +369,7 @@ box_blur_line (const gint box_width, /* Width of the kernel */ /* If the leading edge has gone off the image, but the output and * trailing edge are on the image. (The big loop exits when the * output goes off the image. */ - else + else if (trail >= 0) { for (i = 0; i < bpp; i++) { @@ -377,6 +377,13 @@ box_blur_line (const gint box_width, /* Width of the kernel */ dest[bpp * output + i] = (ac[i] + (coverage >> 1)) / coverage; } } + /* Leading has gone off the image and trailing isn't yet in it + * (small image) */ + else if (output >= 0) + { + for (i = 0; i < bpp; i++) + dest[bpp * output + i] = (ac[i] + (coverage >> 1)) / coverage; + } lead++; output++; -- 1.8.1.4