]> git.sesse.net Git - vlc/commitdiff
VLC_OBJECT: expansion safety
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Wed, 13 Aug 2008 20:09:12 +0000 (23:09 +0300)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Wed, 13 Aug 2008 20:09:54 +0000 (23:09 +0300)
include/vlc_common.h

index 1e7bbf16b622677f1cde6b7d65eede018a8b1594..8b1c32b7f79937c1651186801113ded9333aa8a4 100644 (file)
@@ -532,8 +532,12 @@ typedef struct vlc_object_internals_t vlc_object_internals_t;
 /**@}*/                                                                     \
 
 /* VLC_OBJECT: attempt at doing a clever cast */
-#define VLC_OBJECT( x ) \
-    (((vlc_object_t *)(x))+0*(x)->be_sure_to_add_VLC_COMMON_MEMBERS_to_struct)
+#ifdef __GNUC__
+# define VLC_OBJECT( x ) \
+    (((vlc_object_t *)(x))+0*(((typeof(x))0)->be_sure_to_add_VLC_COMMON_MEMBERS_to_struct))
+#else
+# define VLC_OBJECT( x ) ((vlc_object_t *)(x))
+#endif
 
 #define VLC_GC_MEMBERS                                                       \
 /** \name VLC_GC_MEMBERS                                                     \