empty initializers should be INITIALIZER_LIST with 0 entries
authorMatthias Braun <matze@braunis.de>
Fri, 14 Mar 2008 16:54:30 +0000 (16:54 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 14 Mar 2008 16:54:30 +0000 (16:54 +0000)
[r18949]

parser.c
parsetest/l1.c
type.c

index 3784034..bb48db2 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -1475,6 +1475,13 @@ static void skip_initializers(void)
        }
 }
 
+static initializer_t *create_empty_initializer(void)
+{
+       static initializer_t empty_initializer
+               = { .list = { { INITIALIZER_LIST }, 0 } };
+       return &empty_initializer;
+}
+
 /**
  * Parse a part of an initialiser for a struct or union,
  */
@@ -1484,7 +1491,7 @@ static initializer_t *parse_sub_initializer(type_path_t *path,
 {
        if(token.type == '}') {
                /* empty initializer */
-               return NULL;
+               return create_empty_initializer();
        }
 
        type_t *orig_type = path->top_type;
@@ -1499,7 +1506,7 @@ static initializer_t *parse_sub_initializer(type_path_t *path,
                 * initializers in this case. */
                if(!is_type_valid(type)) {
                        skip_initializers();
-                       return NULL;
+                       return create_empty_initializer();
                }
        }
 
index 3a6b156..df644a2 100644 (file)
@@ -1,4 +1,4 @@
-#include <stdio.h>
+int printf(const char *str, ...);
 
 struct x {};
 struct x a[] = { {}, {} };
diff --git a/type.c b/type.c
index 9941eb1..97f38a8 100644 (file)
--- a/type.c
+++ b/type.c
@@ -31,7 +31,7 @@ static struct obstack   _type_obst;
 static FILE            *out;
 struct obstack         *type_obst                 = &_type_obst;
 static int              type_visited              = 0;
-static bool             print_implicit_array_size = true;
+static bool             print_implicit_array_size = false;
 
 static void intern_print_type_pre(const type_t *type, bool top);
 static void intern_print_type_post(const type_t *type, bool top);