From 9fa8f75dc90217d4682fc22454b064424b8c9497 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 12 Oct 2000 10:28:52 +0100 Subject: [PATCH] c-common.c (decl_attributes): Don't allow strftime formats with first_arg_num nonzero. * 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. testsuite: * gcc.dg/format-attr-1.c: New test. From-SVN: r36845 --- gcc/ChangeLog | 7 +++++++ gcc/c-common.c | 8 ++++++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/format-attr-1.c | 7 +++++++ 4 files changed, 26 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/format-attr-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 80a0937eca3..71eae2321ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2000-10-12 Joseph S. Myers + + * 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 * c-common.c (scanf_flag_specs): Add flags ' and I. diff --git a/gcc/c-common.c b/gcc/c-common.c index 07384f84cab..3d3e7c209b3 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -962,6 +962,12 @@ decl_attributes (node, attributes, prefix_attributes) } } + 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); @@ -2754,6 +2760,8 @@ check_format_info (status, info, params) 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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e7dbf2a0636..369e85cfb85 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-10-12 Joseph S. Myers + + * gcc.dg/format-attr-1.c: New test. + 2000-10-12 Joseph S. Myers * gcc.dg/c90-printf-2.c, gcc.dg/c90-scanf-2.c: Use diff --git a/gcc/testsuite/gcc.dg/format-attr-1.c b/gcc/testsuite/gcc.dg/format-attr-1.c new file mode 100644 index 00000000000..e6ebaf242f7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/format-attr-1.c @@ -0,0 +1,7 @@ +/* Test for strftime format attributes: can't have first_arg_num != 0. */ +/* Origin: Joseph Myers */ +/* { 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" } */ -- 2.30.2