r17787: ifdef out unused macros and generate a smb_panic()
authorStefan Metzmacher <metze@samba.org>
Thu, 24 Aug 2006 10:38:06 +0000 (10:38 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:16:42 +0000 (14:16 -0500)
when the wrong macro is used on a field.

metze
(This used to be commit dd0f692d19416c82f237661710b814ba20163605)

source4/torture/rpc/spoolss.c

index 4011c2bc6cabcdd4a04aac259dd51f459815751c..05bd987c85ce450f6285c6390c915d3c325103ee 100644 (file)
@@ -64,33 +64,55 @@ struct test_spoolss_context {
        }\
 } while(0)
 
+#define _CHECK_FIELD_SIZE(c,r,e,type) do {\
+       if (sizeof(__typeof__(c.e)) != sizeof(type)) { \
+               printf(__location__ ":" #c "." #e "field is not " #type "\n"); \
+               smb_panic(__location__ ":" #c "." #e "field is not " #type ); \
+               ret = False; \
+       }\
+       if (sizeof(__typeof__(r.e)) != sizeof(type)) { \
+               printf(__location__ ":" #r "." #e "field is not " #type "\n"); \
+               smb_panic(__location__ ":" #r "." #e "field is not " #type ); \
+               ret = False; \
+       }\
+} while(0)
+
+#if 0 /* unused */
 #define COMPARE_UINT16(c,r,e) do {\
+       _CHECK_FIELD_SIZE(c,r,e,uint16_t); \
        if (c.e != r.e){\
-               printf("%s: " #c "." #e "  0x%08X (%u) doesn't match " #r "." #e " 0x%08X (%u)\n",\
+               printf("%s: " #c "." #e "  0x%04X (%u) doesn't match " #r "." #e " 0x%04X (%u)\n",\
                        __location__, c.e, c.e, r.e, r.e);\
                ret = False;\
        }\
 } while(0)
+#endif
 
 #define COMPARE_UINT32(c,r,e) do {\
+       _CHECK_FIELD_SIZE(c,r,e,uint32_t); \
        if (c.e != r.e){\
-               printf("%s: " #c "." #e "  0x%04X (%u) doesn't match " #r "." #e " 0x%04X (%u)\n",\
+               printf("%s: " #c "." #e "  0x%08X (%u) doesn't match " #r "." #e " 0x%08X (%u)\n",\
                        __location__, c.e, c.e, r.e, r.e);\
                ret = False;\
        }\
 } while(0)
 
+#if 0 /* unused */
 #define COMPARE_UINT64(c,r,e) do {\
+       _CHECK_FIELD_SIZE(c,r,e,uint64_t); \
        if (c.e != r.e){\
                printf("%s: " #c "." #e "  0x%016llX (%llu) doesn't match " #r "." #e " 0x%016llX (%llu)\n",\
                        __location__, c.e, c.e, r.e, r.e);\
                ret = False;\
        }\
 } while(0)
+#endif
 
 /* TODO: ! */
+#if 0 /* unused */
 #define COMPARE_SEC_DESC(c,r,e)
 #define COMPARE_SPOOLSS_TIME(c,r,e)
+#endif
 #define COMPARE_STRING_ARRAY(c,r,e)
 
 static BOOL test_OpenPrinter_server(struct test_spoolss_context *ctx)