From: SourceForge.net <no...@so...> - 2005-03-27 13:36:54
|
Bugs item #1171379, was opened at 2005-03-27 15:36 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 Category: mingw runtime Group: None Status: Open Resolution: None Priority: 5 Submitted By: Laszlo Keresztfalvi (kereszt) Assigned to: Nobody/Anonymous (nobody) Summary: ifstream.eof() reports false EOF Initial Comment: System: WinXP Professional, Version 2002, SP1 MinGW-3.1.0-1 MSYS-1.0.10 gcc-core-3.4.2-20040916-1 gcc-g++-3.4.2-20040916-1 IF a text file larger than 512 bytes containing DOS line breaks opened for reading in text mode (no ios::binary set) AND ifstream.read() set to read mode than 511 bytes THEN the ifstream.eof() returns TRUE after the first read! Although, the real number of bytes read is smaller than the requested (I think because of translation of line ends) but the file is not on EOF! I found this when my program using 2048 bytes buffer to read a text file failed to load the whole file. #include <fstream> using namespace std; #define BS 512 int main (void) { char buf [BS+1]; ifstream f ("some.txt"); while (!f.eof ()) { f.read (buf, BS); int r = f.gcount (); buf [r] = 0; fprintf (stderr, "%d %d: %s\n", f.eof (), r, buf); } return 0; } ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 |
From: SourceForge.net <no...@so...> - 2005-04-04 13:14:07
|
Bugs item #1171379, was opened at 2005-03-27 15:36 Message generated for change (Comment added) made by ahaferburg You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 Category: mingw runtime Group: None Status: Open Resolution: None Priority: 5 Submitted By: Laszlo Keresztfalvi (kereszt) Assigned to: Nobody/Anonymous (nobody) Summary: ifstream.eof() reports false EOF Initial Comment: System: WinXP Professional, Version 2002, SP1 MinGW-3.1.0-1 MSYS-1.0.10 gcc-core-3.4.2-20040916-1 gcc-g++-3.4.2-20040916-1 IF a text file larger than 512 bytes containing DOS line breaks opened for reading in text mode (no ios::binary set) AND ifstream.read() set to read mode than 511 bytes THEN the ifstream.eof() returns TRUE after the first read! Although, the real number of bytes read is smaller than the requested (I think because of translation of line ends) but the file is not on EOF! I found this when my program using 2048 bytes buffer to read a text file failed to load the whole file. #include <fstream> using namespace std; #define BS 512 int main (void) { char buf [BS+1]; ifstream f ("some.txt"); while (!f.eof ()) { f.read (buf, BS); int r = f.gcount (); buf [r] = 0; fprintf (stderr, "%d %d: %s\n", f.eof (), r, buf); } return 0; } ---------------------------------------------------------------------- Comment By: A. Haferburg (ahaferburg) Date: 2005-04-04 15:14 Message: Logged In: YES user_id=1246682 I ran into this bug, too. I'm using MinGW-3.2.0-rc- 3.exe on Windows 2000 sp 4. Best regards Andreas ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 |
From: SourceForge.net <no...@so...> - 2005-04-07 08:46:20
|
Bugs item #1171379, was opened at 2005-03-28 01:36 Message generated for change (Comment added) made by dannysmith You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 >Category: gcc Group: None Status: Open Resolution: None Priority: 5 Submitted By: Laszlo Keresztfalvi (kereszt) >Assigned to: Danny Smith (dannysmith) Summary: ifstream.eof() reports false EOF Initial Comment: System: WinXP Professional, Version 2002, SP1 MinGW-3.1.0-1 MSYS-1.0.10 gcc-core-3.4.2-20040916-1 gcc-g++-3.4.2-20040916-1 IF a text file larger than 512 bytes containing DOS line breaks opened for reading in text mode (no ios::binary set) AND ifstream.read() set to read mode than 511 bytes THEN the ifstream.eof() returns TRUE after the first read! Although, the real number of bytes read is smaller than the requested (I think because of translation of line ends) but the file is not on EOF! I found this when my program using 2048 bytes buffer to read a text file failed to load the whole file. #include <fstream> using namespace std; #define BS 512 int main (void) { char buf [BS+1]; ifstream f ("some.txt"); while (!f.eof ()) { f.read (buf, BS); int r = f.gcount (); buf [r] = 0; fprintf (stderr, "%d %d: %s\n", f.eof (), r, buf); } return 0; } ---------------------------------------------------------------------- >Comment By: Danny Smith (dannysmith) Date: 2005-04-07 20:46 Message: Logged In: YES user_id=11494 I have submitted this as a bug report to gcc's bugzilla. http://gcc.gnu.org/ml/gcc-bugs/2005-04/msg00754.html Danny ---------------------------------------------------------------------- Comment By: A. Haferburg (ahaferburg) Date: 2005-04-05 01:14 Message: Logged In: YES user_id=1246682 I ran into this bug, too. I'm using MinGW-3.2.0-rc- 3.exe on Windows 2000 sp 4. Best regards Andreas ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 |
From: SourceForge.net <no...@so...> - 2005-04-25 07:16:42
|
Bugs item #1171379, was opened at 2005-03-28 01:36 Message generated for change (Comment added) made by dannysmith You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 Category: gcc Group: None >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Laszlo Keresztfalvi (kereszt) Assigned to: Danny Smith (dannysmith) Summary: ifstream.eof() reports false EOF Initial Comment: System: WinXP Professional, Version 2002, SP1 MinGW-3.1.0-1 MSYS-1.0.10 gcc-core-3.4.2-20040916-1 gcc-g++-3.4.2-20040916-1 IF a text file larger than 512 bytes containing DOS line breaks opened for reading in text mode (no ios::binary set) AND ifstream.read() set to read mode than 511 bytes THEN the ifstream.eof() returns TRUE after the first read! Although, the real number of bytes read is smaller than the requested (I think because of translation of line ends) but the file is not on EOF! I found this when my program using 2048 bytes buffer to read a text file failed to load the whole file. #include <fstream> using namespace std; #define BS 512 int main (void) { char buf [BS+1]; ifstream f ("some.txt"); while (!f.eof ()) { f.read (buf, BS); int r = f.gcount (); buf [r] = 0; fprintf (stderr, "%d %d: %s\n", f.eof (), r, buf); } return 0; } ---------------------------------------------------------------------- >Comment By: Danny Smith (dannysmith) Date: 2005-04-25 19:16 Message: Logged In: YES user_id=11494 Fixed in GCC 4.0.0 Danny ---------------------------------------------------------------------- Comment By: Danny Smith (dannysmith) Date: 2005-04-07 20:46 Message: Logged In: YES user_id=11494 I have submitted this as a bug report to gcc's bugzilla. http://gcc.gnu.org/ml/gcc-bugs/2005-04/msg00754.html Danny ---------------------------------------------------------------------- Comment By: A. Haferburg (ahaferburg) Date: 2005-04-05 01:14 Message: Logged In: YES user_id=1246682 I ran into this bug, too. I'm using MinGW-3.2.0-rc- 3.exe on Windows 2000 sp 4. Best regards Andreas ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=1171379&group_id=2435 |