Hi.

And there's one more integer overflow fix.

Martin
>From 35c22704dc705508672f19b09e6d1b94bd956535 Mon Sep 17 00:00:00 2001
From: Martin Liska <mli...@suse.cz>
Date: Fri, 25 Oct 2019 15:09:32 +0200
Subject: [PATCH] Fix unsigned type overflow in memory report.

gcc/ChangeLog:

2019-10-25  Martin Liska  <mli...@suse.cz>

	* ggc-common.c: One can't subtract unsigned types
	in compare function.
---
 gcc/ggc-common.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c
index 37d3c5df9e1..48db4208599 100644
--- a/gcc/ggc-common.c
+++ b/gcc/ggc-common.c
@@ -928,10 +928,13 @@ public:
   static int
   compare (const void *first, const void *second)
   {
-    const mem_pair_t f = *(const mem_pair_t *)first;
-    const mem_pair_t s = *(const mem_pair_t *)second;
+    const mem_pair_t mem1 = *(const mem_pair_t *) first;
+    const mem_pair_t mem2 = *(const mem_pair_t *) second;
 
-    return s.second->get_balance () - f.second->get_balance ();
+    size_t balance1 = mem1.second->get_balance ();
+    size_t balance2 = mem2.second->get_balance ();
+
+    return balance1 == balance2 ? 0 : (balance1 < balance2 ? 1 : -1);
   }
 
   /* Dump header with NAME.  */
-- 
2.23.0

Reply via email to