public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: c/6547: misleading printf '$' format Date: Fri, 03 May 2002 13:26:00 -0000 [thread overview] Message-ID: <20020503202603.16372.qmail@sources.redhat.com> (raw) The following reply was made to PR c/6547; it has been noted by GNATS. From: "Joseph S. Myers" <jsm28@cam.ac.uk> To: Pierre-Canalsat PETIT <pierrecanalsat.petit.canalsat@canal-plus.com> Cc: <gcc-bugs@gcc.gnu.org>, <gcc-gnats@gcc.gnu.org>, <gcc-patches@gcc.gnu.org>, <peio@blutch.dyndns.org>, <prpetit@canal-plus.com> Subject: Re: c/6547: misleading printf '$' format Date: Fri, 3 May 2002 21:19:08 +0100 (BST) On Fri, 3 May 2002, Pierre-Canalsat PETIT wrote: > int main(int argc, char *argv[]) { > printf("Usage: %1$s [-n <option 1>] [-m <option 2>]\n" > " %3$*2$c [-i <input>] [-o <output>] [-c <nb>] [-t <ms>]\n" > " %3$*2$c <file.in> <file.out>\n", *argv, strlen(*argv), ' '); > return 0; > } > > This returns me a "warning: too few arguments for format". > But if you remove the second line of the format, it does compile > without warning... Thanks for that bug report. Patch below applied to mainline only (since it's not a regression). Bootstrapped with no regressions on i686-pc-linux-gnu. 2002-05-03 Joseph S. Myers <jsm28@cam.ac.uk> * c-format.c (check_format_info_main): Don't check for presence of parameter for * width until after operand number has been read, and only check for it if format parameters are available. Fixes PR c/6547. testsuite: 2002-05-03 Joseph S. Myers <jsm28@cam.ac.uk> * gcc.dg/format/xopen-2.c: New test. --- c-format.c.orig 2002-04-19 19:10:11.000000000 +0000 +++ c-format.c 2002-05-03 15:01:13.000000000 +0000 @@ -1751,11 +1751,6 @@ check_format_info_main (status, res, inf /* "...a field width...may be indicated by an asterisk. In this case, an int argument supplies the field width..." */ ++format_chars; - if (params == 0) - { - status_warning (status, "too few arguments for format"); - return; - } if (has_operand_number != 0) { int opnum; @@ -1775,6 +1770,11 @@ check_format_info_main (status, res, inf } if (info->first_arg_num != 0) { + if (params == 0) + { + status_warning (status, "too few arguments for format"); + return; + } cur_param = TREE_VALUE (params); if (has_operand_number <= 0) { --- testsuite/gcc.dg/format/xopen-2.c 2001-03-26 23:57:02.000000000 +0000 +++ testsuite/gcc.dg/format/xopen-2.c 2002-05-03 14:59:20.000000000 +0000 @@ -0,0 +1,21 @@ +/* Test for X/Open format extensions, as found in the + Single Unix Specification. Test for bug reported by + Pierre-Canalsat PETIT <pierrecanalsat.petit.canalsat@canal-plus.com> + in PR c/6547. The test for absence of a parameter for a * width was done + too early in the case of operand numbers and vprintf formats. +*/ +/* Origin: Joseph Myers <jsm28@cam.ac.uk> */ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wformat" } */ + +#include "format.h" + +void vbar (va_list, const char *) __attribute__((__format__(__printf__, 2, 0))); + +void +foo (int i, int j, va_list va) +{ + printf("%2$*1$c", i, j); + printf("%2$*1$c %2$*1$c", i, j); /* { dg-bogus "too few" "bogus too few dollar" } */ + vbar(va, "%*s"); /* { dg-bogus "too few" "bogus too few vprintf" } */ +} -- Joseph S. Myers jsm28@cam.ac.uk
next reply other threads:[~2002-05-03 20:26 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-05-03 13:26 Joseph S. Myers [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-08-23 13:16 jsm28 2002-05-03 7:26 Pierre-Canalsat PETIT 2002-05-03 6:56 Joseph S. Myers 2002-05-03 6:06 peio
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20020503202603.16372.qmail@sources.redhat.com \ --to=jsm28@cam.ac.uk \ --cc=gcc-prs@gcc.gnu.org \ --cc=nobody@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).