From: pavenis AT lanet DOT lv To: salvador , 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) Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body 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 Precedence: bulk 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 > > 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 > > >