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


             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: link
Be 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).