ndisasm: handle the case of "no more sync points"
authorH. Peter Anvin <hpa@zytor.com>
Tue, 20 Nov 2007 21:22:58 +0000 (13:22 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 20 Nov 2007 21:22:58 +0000 (13:22 -0800)
Handle the case of "no more sync points" explicitly, instead of saying
the next sync point is at UINT32_MAX.

ndisasm.c
sync.c

index 7949118..479bfe4 100644 (file)
--- a/ndisasm.c
+++ b/ndisasm.c
@@ -259,7 +259,7 @@ int main(int argc, char **argv)
     nextsync = next_sync(offset, &synclen);
     do {
         uint32_t to_read = buffer + sizeof(buffer) - p;
-        if (to_read > nextsync - offset - (p - q))
+       if (nextsync && to_read > nextsync - offset - (p - q))
             to_read = nextsync - offset - (p - q);
         if (to_read) {
             lenread = fread(p, 1, to_read, fp);
@@ -268,7 +268,7 @@ int main(int argc, char **argv)
         } else
             lenread = 0;
         p += lenread;
-        if ((uint32_t)offset == nextsync) {
+        if (nextsync && (uint32_t)offset == nextsync) {
             if (synclen) {
                 fprintf(stdout, "%08"PRIX32"  skipping 0x%"PRIX32" bytes\n", offset, synclen);
                 offset += synclen;
diff --git a/sync.c b/sync.c
index b60d2a4..419706c 100644 (file)
--- a/sync.c
+++ b/sync.c
@@ -96,6 +96,6 @@ uint32_t next_sync(uint32_t position, uint32_t *length)
     } else {
         if (length)
             *length = 0L;
-        return UINT32_MAX;
+        return 0;
     }
 }