Commit c5b6a8f5b7c878b03c425d1967dd86ae1a5dd249
- Diff rendering mode:
- inline
- side by side
etc/ChangeLog-5.1
(3 / 0)
|   | |||
| 5 | 5 | fix has been integrated. We now try to convert already read buffer | |
| 6 | 6 | even if latest file read failed. | |
| 7 | 7 | ||
| 8 | * src/fstream.cpp: Integrate trunk fix for management of Crtl-Z under | ||
| 9 | Windows. | ||
| 10 | |||
| 8 | 11 | 2008-01-11 Petr Ovtchenkov <complement@users.sourceforge.net> | |
| 9 | 12 | ||
| 10 | 13 | * src/num_put_float.cpp, stlport/stl/_cstdlib.h, stlport/stl/config/_hpux.h: |
src/fstream.cpp
(10 / 8)
|   | |||
| 825 | 825 | // charaters to the buffer, avoids extraction of too small chunk of datas | |
| 826 | 826 | // which would be counter performant. | |
| 827 | 827 | 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); | ||
| 830 | 830 | ||
| 831 | if (NumberOfBytesRead == 0) | ||
| 831 | if (numberOfBytesRead == 0) | ||
| 832 | 832 | break; | |
| 833 | 833 | ||
| 834 | 834 | if (!(_M_openmode & ios_base::binary)) { | |
| 835 | 835 | // translate CR-LFs to LFs in the buffer | |
| 836 | 836 | char *to = buf + readen; | |
| 837 | 837 | char *from = to; | |
| 838 | char *last = from + NumberOfBytesRead - 1; | ||
| 838 | char *last = from + numberOfBytesRead - 1; | ||
| 839 | 839 | for (; from <= last && *from != _STLP_CTRLZ; ++from) { | |
| 840 | 840 | if (*from != _STLP_CR) | |
| 841 | 841 | *to++ = *from; | |
| … | … | ||
| 877 | 877 | } | |
| 878 | 878 | } // found CR | |
| 879 | 879 | } // for | |
| 880 | readen = to - buf; | ||
| 880 | 881 | // 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 | } | ||
| 884 | 886 | } | |
| 885 | 887 | else | |
| 886 | readen += NumberOfBytesRead; | ||
| 888 | readen += numberOfBytesRead; | ||
| 887 | 889 | } | |
| 888 | 890 | return readen; | |
| 889 | 891 |

