]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
check_uuid_matches: fix infinite loop following rewrite of this
authorJulian Seward <jseward@acm.org>
Wed, 4 Sep 2013 06:17:44 +0000 (06:17 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 4 Sep 2013 06:17:44 +0000 (06:17 +0000)
function during big overhaul of the debuginfo reader earlier this
year.

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

coregrind/m_debuginfo/readmacho.c

index 94865cbbe7428509f6267ecbaded43e1defc5967..15eb1ad45f60fe12a037346fd79f6cdc916689e9 100644 (file)
@@ -652,7 +652,7 @@ static Bool check_uuid_matches ( DiSlice sli, UChar* uuid )
       UInt i;
       /* Scan through the 1K chunk we got, looking for the start char. */
       for (i = 0; i < (UInt)nGot; i++) {
-         if (buf[i] != first)
+         if (LIKELY(buf[i] != first))
             continue;
          /* first char matches.  See if we can get 16 bytes at this
             offset, and compare. */
@@ -662,8 +662,8 @@ static Bool check_uuid_matches ( DiSlice sli, UChar* uuid )
             if (0 == VG_(memcmp)(&buff16[0], &uuid[0], 16))
                return True;
          }
-         curr_off += nGot;
       }
+      curr_off += nGot;
    }
    return False;
 }