delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/09/28/12:57:04

From: pavenis AT lanet DOT lv
To: salvador <salvador AT inti DOT gov DOT ar>, djgpp-workers AT delorie DOT com
Date: Fri, 28 Sep 2001 19:55:45 +0300
MIME-Version: 1.0
Subject: Re: GCC 3.01 Streams problem
Cc: gcc-bugs AT gcc DOT gnu DOT org
Message-ID: <3BB4D5C1.12443.6387C@localhost>
In-reply-to: <3BB47CE0.106BF5AF@inti.gov.ar>
X-mailer: Pegasus Mail for Win32 (v4.0, beta 40)
Reply-To: djgpp-workers AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp-workers AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

Verified with following versions:

i586-pc-msdosdjgpp	gcc-3.0.1 release
i586-pc-msdosdjgpp	gcc-3.1 20010927 (experimental)
i686-pc-linux-gnu			      gcc-3.0.2 20010927 (prerelease)

This problem were present in all 3 cases (so also under Linux).
So I think it's a serious regression against gcc-2.95.X not only
for DJGPP but also under Linux

Andris

On 28 Sep 2001 at 10:36, salvador wrote:

> Hi All!
> 
>   GCC 3.0 changed too much things in the C++ classes to follow the new
> standard (is that ISO C++ 1998?).
>   I was "fighting" to support it in the TV library. Thanks to Andris and
> other
> people I got the library compiled. But while testing the examples I found
> a really strange behavior.
>   I don't know if that is a bug and in this case if that's djgpp specific.
> So I need help from somebody with:
> 
> a) Access to another systems with gcc 3.x (not djgpp)
> b) Knowledge about the new streams.
> 
>   It looks like a bug and as it is for lines that only contains EOL (\r\n)
> could
> be related to djgpp's \r\n to \n traslation. The following code compiled
> with
> gcc 2.95.x can read a complete file name meassuring the length of each
> line. The same code compiled with 3.0.1 will stop reading in the first empty
> 
> line and from this point will enter in an endless loop. Note that EOF is not
> 
> reached nor indicated with gcc 3.
> 
> Here is the stripped code (the original loads the text in memory):
> 
> #include <fstream.h>
> 
> const int maxLineLength=200;
> 
> int main(void)
> {
>  ifstream fileToView("test.txt");
>  char line[maxLineLength+1];
>  int len=0;
>  while(!fileToView.eof())
>    {
>     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());
>  return 0;
> }
> 
> Here is what you can use for `test.txt' to feed the example:
> 
> <--------
> First Line
> Another Line
> 
> The above is empty
> 
> <---------
> 
> Output from gcc 2.95.x compiled code:
> 
> 10 (10)
> 12 (10)
> 0 (10)
> 18 (10)
> 0 (10)
> EOF: 1
> 
> Output from gcc 3.0.1 compiled code:
> 
> 10 (10)
> 12 (10)
> 0 (10)
> 0 (10)
> ....
> 
> SET
> 
> --
> Salvador Eduardo Tropea (SET). (Electronics Engineer)
> Visit my home page: http://welcome.to/SetSoft or
> http://www.geocities.com/SiliconValley/Vista/6552/
> Alternative e-mail: set AT computer DOT org set AT ieee DOT org
> Address: Curapaligue 2124, Caseros, 3 de Febrero
> Buenos Aires, (1678), ARGENTINA Phone: +(5411) 4759 0013
> 
> 
> 


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019