Commit c5b6a8f5b7c878b03c425d1967dd86ae1a5dd249

  • avatar
  • dums <dums @01b27279-081b-0410…d9d9e0fb0389.>
  • Sun Jan 13 11:25:59 CET 2008
  • Tree SHA1: 4af7926
  • Parent SHA1: e5f7b16 (Complete bug #1854345 bug fix as already done in trunk. Moreover, an other SVN trunk bug fix has been integrated. We now try to convert already read buffer even if latest file read failed.)
  • raw diff | raw patch
Integrated trunk fix for management of Crtl-Z under Windows.

git-svn-id: https://stlport.svn.sourceforge.net/svnroot/stlport/branches/STLPORT_5_1/STLport@3387 01b27279-081b-0410-8cf9-d9d9e0fb0389
  
55 fix has been integrated. We now try to convert already read buffer
66 even if latest file read failed.
77
8 * src/fstream.cpp: Integrate trunk fix for management of Crtl-Z under
9 Windows.
10
8112008-01-11 Petr Ovtchenkov <complement@users.sourceforge.net>
912
1013 * src/num_put_float.cpp, stlport/stl/_cstdlib.h, stlport/stl/config/_hpux.h:
  
825825 // charaters to the buffer, avoids extraction of too small chunk of datas
826826 // which would be counter performant.
827827 while (__STATIC_CAST(size_t, (n - readen)) >= chunkSize) {
828 DWORD NumberOfBytesRead;
829 ReadFile(_M_file_id, buf + readen, __STATIC_CAST(DWORD, chunkSize), &NumberOfBytesRead, 0);
828 DWORD numberOfBytesRead;
829 ReadFile(_M_file_id, buf + readen, __STATIC_CAST(DWORD, chunkSize), &numberOfBytesRead, 0);
830830
831 if (NumberOfBytesRead == 0)
831 if (numberOfBytesRead == 0)
832832 break;
833833
834834 if (!(_M_openmode & ios_base::binary)) {
835835 // translate CR-LFs to LFs in the buffer
836836 char *to = buf + readen;
837837 char *from = to;
838 char *last = from + NumberOfBytesRead - 1;
838 char *last = from + numberOfBytesRead - 1;
839839 for (; from <= last && *from != _STLP_CTRLZ; ++from) {
840840 if (*from != _STLP_CR)
841841 *to++ = *from;
877877 }
878878 } // found CR
879879 } // for
880 readen = to - buf;
880881 // seek back to TEXT end of file if hit CTRL-Z
881 if (from <= last) // terminated due to CTRLZ
882 SetFilePointer(_M_file_id, (LONG)((last+1) - from), 0, SEEK_CUR);
883 readen += to - (buf + readen);
882 if (from <= last) { // terminated due to CTRLZ
883 SetFilePointer(_M_file_id, -(LONG)((last + 1) - from), 0, SEEK_CUR);
884 break;
885 }
884886 }
885887 else
886 readen += NumberOfBytesRead;
888 readen += numberOfBytesRead;
887889 }
888890 return readen;
889891