]> git.sur5r.net Git - cc65/commitdiff
Added some more checks and initialization.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 9 Aug 2010 15:52:23 +0000 (15:52 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 9 Aug 2010 15:52:23 +0000 (15:52 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4800 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/dbginfo/dbginfo.c

index 7b35224b0bf59eb6a8383a60ecc07ee51deee540..f6a201ade8a599e16deaf634048da74ffff8d157 100644 (file)
@@ -54,7 +54,7 @@
 
 /* Version numbers of the debug format we understand */
 #define VER_MAJOR       1U
-#define VER_MINOR       0U 
+#define VER_MINOR       0U
 
 /* Dynamic strings */
 typedef struct StrBuf StrBuf;
@@ -1663,11 +1663,22 @@ static void ParseSegment (InputData* D)
         goto ErrorExit;
     }
 
-    /* Check for required information */
+    /* Check for required and/or matched information */
     if ((InfoBits & ibRequired) != ibRequired) {
         ParseError (D, CC65_ERROR, "Required attributes missing");
         goto ErrorExit;
     }
+    InfoBits &= (ibOutputName | ibOutputOffs);
+    if (InfoBits != ibNone && InfoBits != (ibOutputName | ibOutputOffs)) {
+        ParseError (D, CC65_ERROR,
+                    "Attributes \"outputname\" and \"outputoffs\" must be paired");
+        goto ErrorExit;
+    }
+
+    /* Fix OutputOffs if not given */
+    if (InfoBits == ibNone) {
+        OutputOffs = 0;
+    }
 
     /* Create the segment info and remember it */
     S = NewSegInfo (&SegName, Id, Start, Size, &OutputName, OutputOffs);