Alignment of GTypeClass

We currently have:

 struct _GTypeClass {
   GType g_type;

Which has an alignment the same as GType - typically 4 bytes on 64 bit machines.

However, class structures deriving from GTypeClass typically contain
pointers, so have larger alignments - typically 8 on 64 bit machines.

So, GCC, with -Wcast-align produces warnings for things like:

 (GObjectClass *) g_type_check_class_cast ((GTypeClass *)klass, G_TYPE_OBJECT);

Because the alignment of GTypeClass is being increased. 

So, I think we need to change our definition of GTypeClass to:

 struct _GTypeClass {
   GType g_type;
 #ifdef __GNUC__
   __attribute__ ((aligned (G_MEM_ALIGN)))

Make sense?

[ P.S. The exact same problem occurs with GtkTypeClass and GTK+-1.2 ]

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