From 4f00f058f58ea08c446c9bb93c2704a48dcc3cea Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1=20K=C5=99enek?= Date: Wed, 1 Aug 2007 15:47:29 +0000 Subject: [PATCH] check also Event union size explicitely --- org.glite.lb.client-interface/interface/events.h.T | 9 +++++---- org.glite.lb.client-interface/interface/padstruct.h | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/org.glite.lb.client-interface/interface/events.h.T b/org.glite.lb.client-interface/interface/events.h.T index 12fd953..4fb492e 100644 --- a/org.glite.lb.client-interface/interface/events.h.T +++ b/org.glite.lb.client-interface/interface/events.h.T @@ -18,6 +18,8 @@ #include "glite/lb/context.h" #include "glite/lb/notifid.h" +#include "glite/lb/padstruct.h" + #ifdef __cplusplus extern "C" { #endif @@ -314,7 +316,7 @@ _EDG_WLL_EVENT_COMMON * \union edg_wll_Event * \brief All event types union */ -typedef union _edg_wll_Event { +glite_lb_padded_union(_edg_wll_Event,30, edg_wll_EventCode type; /* it is probably never used */ edg_wll_AnyEvent any; @@@{ @@ -327,9 +329,8 @@ for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} } gen $indent."edg_wll_${t}Event\t${tl};\n"; } @@@} -/* make it big enough for further extensions */ - char _pad[sizeof(void *) * 30]; -} edg_wll_Event; +) +typedef union _edg_wll_Event edg_wll_Event; /** diff --git a/org.glite.lb.client-interface/interface/padstruct.h b/org.glite.lb.client-interface/interface/padstruct.h index 7621190..531b53e 100644 --- a/org.glite.lb.client-interface/interface/padstruct.h +++ b/org.glite.lb.client-interface/interface/padstruct.h @@ -4,3 +4,8 @@ _padded_content \ char _padding[_padded_size*sizeof(void *) - sizeof(struct _padded_name##_to_pad__dont_use)]; \ }; + +#define glite_lb_padded_union(_padded_name,_padded_size,_padded_content) \ + union _padded_name##_to_pad__dont_use { _padded_content } ; \ + struct _padded_name##_to_check_pad__dont_use { char pad[_padded_size*sizeof(void *) - sizeof(union _padded_name##_to_pad__dont_use)]; }; \ + union _padded_name { _padded_content char _pad[_padded_size*sizeof(void *)]; }; -- 1.8.2.3