From 877d4dd0bd9c2296fa39baa39fc3100ae94e0637 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Sun, 1 Aug 2004 20:24:46 +0000 Subject: [PATCH] Fix bug #86254 -- symtab sorting was going array in very obscure circumstances due to a signed/unsigned int problem. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2540 --- coregrind/vg_symtab2.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/coregrind/vg_symtab2.c b/coregrind/vg_symtab2.c index 029be637b0..62263233bc 100644 --- a/coregrind/vg_symtab2.c +++ b/coregrind/vg_symtab2.c @@ -397,7 +397,9 @@ static Int compare_RiSym(void *va, void *vb) { RiSym *a = (RiSym *)va; RiSym *b = (RiSym *)vb; - return a->addr - b->addr; + if (a->addr < b->addr) return -1; + if (a->addr > b->addr) return 1; + return 0; } /* Two symbols have the same address. Which name do we prefer? @@ -604,7 +606,9 @@ static Int compare_ScopeRange(void *va, void *vb) { ScopeRange *a = (ScopeRange *)va; ScopeRange *b = (ScopeRange *)vb; - return a->addr - b->addr; + if (a->addr < b->addr) return -1; + if (a->addr > b->addr) return 1; + return 0; } static @@ -673,7 +677,9 @@ static Int compare_RiLoc(void *va, void *vb) { RiLoc *a = (RiLoc *)va; RiLoc *b = (RiLoc *)vb; - return a->addr - b->addr; + if (a->addr < b->addr) return -1; + if (a->addr > b->addr) return 1; + return 0; } static -- 2.47.2