diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-08-16 11:19:29 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2011-08-16 15:01:06 +0200 |
commit | c0887806c54985a22e7a6688fee113dd17ceaeaa (patch) | |
tree | 35ebf98a4590fa51cc81c0bb9c4f409d4116e104 | |
parent | 1e7daaf843293ecac51dc3a4c93bb85bf6823264 (diff) |
Related: fdo#39376/fdo#34880 short fread isn't an error when its eof
Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r-- | ucb/source/ucp/ftp/ftpinpstr.cxx | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/ucb/source/ucp/ftp/ftpinpstr.cxx b/ucb/source/ucp/ftp/ftpinpstr.cxx index c1f7558d45..87af4c393c 100644 --- a/ucb/source/ucp/ftp/ftpinpstr.cxx +++ b/ucb/source/ucp/ftp/ftpinpstr.cxx @@ -52,8 +52,6 @@ FTPInputStream::FTPInputStream(FILE* tmpfl) : m_tmpfl(tmpfl ? tmpfl : tmpfile()) { fseek(m_tmpfl,0,SEEK_END); -// fpos_t pos; -// fgetpos(m_tmpfl,&pos); long pos = ftell(m_tmpfl); rewind(m_tmpfl); m_nLength = sal_Int64(pos); @@ -107,20 +105,12 @@ sal_Int32 SAL_CALL FTPInputStream::readBytes(Sequence< sal_Int8 >& aData, if(0 <= nBytesToRead && aData.getLength() < nBytesToRead) aData.realloc(nBytesToRead); -// fpos_t bpos,epos; - -// fgetpos(m_tmpfl,&bpos); -// fread(aData.getArray(),nBytesToRead,1,m_tmpfl); -// fgetpos(m_tmpfl,&epos); - long bpos,epos; - - bpos = ftell(m_tmpfl); - if (fread(aData.getArray(),nBytesToRead,1,m_tmpfl) != 1) + size_t nWanted = static_cast<size_t>(nBytesToRead); + size_t nRead = fread(aData.getArray(), 1, nWanted, m_tmpfl); + if (nRead != nWanted && ferror(m_tmpfl)) throw IOException(); - epos = ftell(m_tmpfl); - - return sal_Int32(epos-bpos); + return static_cast<sal_Int32>(nRead); } |