From 8b34eb644f8a72f214155d24a56de62cf7c04ecb Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 21 Jun 2018 16:16:30 +0200 Subject: [PATCH 1/2] Avoid undefined behaviour due to division by zero --- src/libImaging/QuantOctree.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/libImaging/QuantOctree.c b/src/libImaging/QuantOctree.c index 018dfe1d9..d5af3c39a 100644 --- a/src/libImaging/QuantOctree.c +++ b/src/libImaging/QuantOctree.c @@ -149,10 +149,17 @@ count_used_color_buckets(const ColorCube cube) { static void avg_color_from_color_bucket(const ColorBucket bucket, Pixel *dst) { float count = bucket->count; - dst->c.r = (int)(bucket->r / count); - dst->c.g = (int)(bucket->g / count); - dst->c.b = (int)(bucket->b / count); - dst->c.a = (int)(bucket->a / count); + if (bucket->count != 0) { + dst->c.r = (int)(bucket->r / count); + dst->c.g = (int)(bucket->g / count); + dst->c.b = (int)(bucket->b / count); + dst->c.a = (int)(bucket->a / count); + } else { + dst->c.r = 0; + dst->c.g = 0; + dst->c.b = 0; + dst->c.a = 0; + } } static int From 9a0b9607623597fb9ebc675b99af4e79b5eb968c Mon Sep 17 00:00:00 2001 From: Hugo Date: Sat, 29 Sep 2018 19:23:42 +0300 Subject: [PATCH 2/2] Re-use count variable --- src/libImaging/QuantOctree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libImaging/QuantOctree.c b/src/libImaging/QuantOctree.c index d5af3c39a..6e4143d9e 100644 --- a/src/libImaging/QuantOctree.c +++ b/src/libImaging/QuantOctree.c @@ -149,7 +149,7 @@ count_used_color_buckets(const ColorCube cube) { static void avg_color_from_color_bucket(const ColorBucket bucket, Pixel *dst) { float count = bucket->count; - if (bucket->count != 0) { + if (count != 0) { dst->c.r = (int)(bucket->r / count); dst->c.g = (int)(bucket->g / count); dst->c.b = (int)(bucket->b / count);