]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/hg_wordset.c
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / helgrind / hg_wordset.c
index 330c2e663d94f6ce9a8d2de1b304709d61a6fb37..a7cb814774af25301146496b0725d7a15ea2a9b6 100644 (file)
@@ -205,8 +205,17 @@ static Word cmp_WordVecs_for_FM ( UWord wv1W, UWord wv2W )
    UWord    i;
    WordVec* wv1    = (WordVec*)wv1W;
    WordVec* wv2    = (WordVec*)wv2W;
-   UWord    common = wv1->size < wv2->size ? wv1->size : wv2->size;
-   for (i = 0; i < common; i++) {
+
+   // WordVecs with smaller size are smaller.
+   if (wv1->size < wv2->size) {
+      return -1;
+   }
+   if (wv1->size > wv2->size) {
+      return 1;
+   }
+
+   // Sizes are equal => order based on content.
+   for (i = 0; i < wv1->size; i++) {
       if (wv1->words[i] == wv2->words[i])
          continue;
       if (wv1->words[i] < wv2->words[i])
@@ -215,19 +224,6 @@ static Word cmp_WordVecs_for_FM ( UWord wv1W, UWord wv2W )
          return 1;
       tl_assert(0);
    }
-   /* Ok, the common sections are identical.  So now consider the
-      tails.  Both sets are considered to finish in an implied
-      sequence of -infinity. */
-   if (wv1->size < wv2->size) {
-      tl_assert(common == wv1->size);
-      return -1; /* impliedly, wv1 contains some -infinitys in places
-                    where wv2 doesn't. */
-   }
-   if (wv1->size > wv2->size) {
-      tl_assert(common == wv2->size);
-      return 1;
-   }
-   tl_assert(common == wv1->size);
    return 0; /* identical */
 }