]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug reported by Greg King: Initialized data for constant arrays was
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 20 Aug 2009 10:55:38 +0000 (10:55 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 20 Aug 2009 10:55:38 +0000 (10:55 +0000)
not placed in the RODATA but in the DATA segment.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4044 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/compile.c

index 2e6acadd1a5e6243709209f9526386baf8db9bdf..c51191885b665e8bc14b3eebad2bfc487f16b1de 100644 (file)
@@ -192,9 +192,14 @@ static void Parse (void)
                        }
                    }
 
-                   /* Switch to the data or rodata segment */
-                   if (IsQualConst (Decl.Type)) {
-                       g_userodata ();
+                   /* Switch to the data or rodata segment. For arrays, check
+                      * the element qualifiers, since not the array but its
+                      * elements are const.
+                      */
+                   if (IsQualConst (Decl.Type) ||
+                        (IsTypeArray (Decl.Type) &&
+                         IsQualConst (GetElementType (Decl.Type)))) {
+                       g_userodata ();
                    } else {
                        g_usedata ();
                    }