tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] Patch to correct using incomplete types in structures/uni


From: Amine Najahi
Subject: [Tinycc-devel] Patch to correct using incomplete types in structures/unions.
Date: Mon, 30 Sep 2013 01:05:52 +0200

Hi tcc folks,

I think I sent a premature version of this mail earlier. If so, please forgive me for it.

In its current version tcc allows using incomplete types inside structures/unions.

Therefore the following codes incorrectly compile in tcc:


struct myFirstStruct; //incomplete type

struct mySecondStruct{
    struct myFirstStruct field;
};

// or even the following circular structure
 
struct mySecondStruct{
    struct mySecondStruct field;
};


Below is a tentative patch to correct this behaviour.
Thanks and keep up the good work.
--
diff --git a/tccgen.c b/tccgen.c
index 0f0aac5..af8140a 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -2824,6 +2824,9 @@ static void struct_decl(CType *type, int u, int tdef)
                         type_decl(&type1, &ad, &v, TYPE_DIRECT | TYPE_ABSTRACT);
                         if (v == 0 && (type1.t & VT_BTYPE) != VT_STRUCT)
                             expect("identifier");
+                       if (type_size(&type1, &align) < 0)
+                            tcc_error("field '%s' has incomplete type",
+                                  get_tok_str(v, NULL));
                         if ((type1.t & VT_BTYPE) == VT_FUNC ||
                             (type1.t & (VT_TYPEDEF | VT_STATIC | VT_EXTERN | VT_INLINE)))
                             tcc_error("invalid type for '%s'",

Attachment: incomplete_types.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]