]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix bug #86254 -- symtab sorting was going array in very obscure circumstances
authorNicholas Nethercote <n.nethercote@gmail.com>
Sun, 1 Aug 2004 20:24:46 +0000 (20:24 +0000)
committerNicholas Nethercote <n.nethercote@gmail.com>
Sun, 1 Aug 2004 20:24:46 +0000 (20:24 +0000)
due to a signed/unsigned int problem.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2540

coregrind/vg_symtab2.c

index 029be637b072cd877a3928a544ceb20600f38787..62263233bc1afb93e0837602218e95479db898da 100644 (file)
@@ -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