dump: Fix dumping all contents for all v1 and v3.
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 28 Jul 2015 04:36:44 +0000 (21:36 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 28 Jul 2015 04:36:44 +0000 (21:36 -0700)
The new special case for v1 bears further examination--probably the match
values are significant.

dump.c

diff --git a/dump.c b/dump.c
index 0b7e82452bea17d46d03dda55335c0e3d3c595f9..73935a73374faf7df3695a23436ad8c2506385ba 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -252,10 +252,15 @@ dump_value_31(FILE *stream)
             {
               /* We only have one SPV file for this version (with many
                  tables). */
-              match_u32_assert(0x200);
-              match_u32_assert(0x1000000);
-              match_u32_assert(0);
-              match_byte_assert(0);
+              match_byte(0);
+              if (!match_u32(1))
+                match_u32_assert(2);
+              match_byte(0);
+              match_byte(0);
+              if (!match_u32(0) && !match_u32(1) && !match_u32(2) && !match_u32(3) && !match_u32(4) && !match_u32(5) && !match_u32(6) && !match_u32(7) && !match_u32(8) && !match_u32(9))
+                match_u32_assert(10);
+              match_byte(0);
+              match_byte(0);
               return;
             }
 
@@ -663,6 +668,8 @@ dump_data(void)
     {
       printf ("    <datum index=\"%d\">\n", get_u32());
       match_u32_assert(0);
+      if (version == 1)
+        match_byte(0);
       dump_value(stdout, 1, false);
       fprintf (stdout, "    </datum>\n");
     }