+2000-10-12 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * c-common.c (decl_attributes): Don't allow strftime formats with
+ first_arg_num nonzero.
+ (check_format_info): Set wanted_type and wanted_type_name to zero
+ before they are possibly assigned and used.
+
2000-10-12 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (scanf_flag_specs): Add flags ' and I.
}
}
+ if (format_type == strftime_format_type && first_arg_num != 0)
+ {
+ error ("strftime formats cannot format arguments");
+ continue;
+ }
+
record_function_format (DECL_NAME (decl),
DECL_ASSEMBLER_NAME (decl),
format_type, format_num, first_arg_num);
status_warning (status, "no closing `]' for `%%[' format");
}
+ wanted_type = 0;
+ wanted_type_name = 0;
if (fki->flags & FMT_FLAG_ARG_CONVERT)
{
wanted_type = (fci->types[length_chars_val].type
+2000-10-12 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * gcc.dg/format-attr-1.c: New test.
+
2000-10-12 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc.dg/c90-printf-2.c, gcc.dg/c90-scanf-2.c: Use
--- /dev/null
+/* Test for strftime format attributes: can't have first_arg_num != 0. */
+/* Origin: Joseph Myers <jsm28@cam.ac.uk> */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wformat" } */
+
+extern void foo0 (const char *) __attribute__((__format__(__strftime__, 1, 0)));
+extern void foo1 (const char *, ...) __attribute__((__format__(__strftime__, 1, 2))); /* { dg-error "cannot format" "strftime first_arg_num != 0" } */