public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: pme@gcc.gnu.org To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, paolo@gcc.gnu.org, pavenis@lanet.lv, salvador@inti.gov.ar Subject: Re: libstdc++/4419: ifstream::get(buffer,len) stops reading when an empty line appears. Date: Mon, 11 Mar 2002 13:35:00 -0000 [thread overview] Message-ID: <20020311213541.14912.qmail@sources.redhat.com> (raw) Synopsis: ifstream::get(buffer,len) stops reading when an empty line appears. State-Changed-From-To: feedback->closed State-Changed-By: pme State-Changed-When: Mon Mar 11 13:35:41 2002 State-Changed-Why: The bug is in the user's code. The standard specifies that if no characters are extracted -- which is the case when calling get() on an empty line -- then the stream's failbit is set. The code should is not testing for failbit. Here is a modified testcase: #include <fstream> const int maxLineLength=200; int main(void) { std::ifstream fileToView("4419.data"); char line[maxLineLength+1]; int len=0; //while(!fileToView.eof()) while(fileToView) { fileToView.get(line, sizeof line); char c; fileToView.get(c); // grab trailing newline printf("%d (%d)\n",strlen(line),c); // Sanity stop if (++len==20) return 1; } printf("EOF: %d\n",fileToView.eof()); printf("goodbit: %d\n",fileToView.good()); printf("failbit: %d\n",fileToView.fail()); printf("badbit: %d\n",fileToView.bad()); return 0; } Note the change in the while condition. Output is: 10 (10) 12 (10) 0 (10) EOF: 0 goodbit: 0 failbit: 1 badbit: 0 So the condition is being indicated, but the user was only testing for EOF, not for a general "stop" condition. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4419
next reply other threads:[~2002-03-11 21:35 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-03-11 13:35 pme [this message] -- strict thread matches above, loose matches on Subject: below -- 2001-12-10 4:46 salvador 2001-12-08 2:46 paolo 2001-12-08 2:42 paolo 2001-09-28 15:06 salvador
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=20020311213541.14912.qmail@sources.redhat.com \ --to=pme@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ --cc=gcc-gnats@gcc.gnu.org \ --cc=gcc-prs@gcc.gnu.org \ --cc=paolo@gcc.gnu.org \ --cc=pavenis@lanet.lv \ --cc=salvador@inti.gov.ar \ /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).