GCC 3.01 Streams problem

pavenis@lanet.lv pavenis@lanet.lv
Fri Sep 28 09:55:00 GMT 2001


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@computer.org set@ieee.org
> Address: Curapaligue 2124, Caseros, 3 de Febrero
> Buenos Aires, (1678), ARGENTINA Phone: +(5411) 4759 0013
> 
> 
> 




More information about the Gcc-bugs mailing list