summaryrefslogtreecommitdiff
path: root/vcl/unx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-06-21 10:47:07 +0100
committerCaolán McNamara <caolanm@redhat.com>2011-06-21 12:25:28 +0100
commit1b74a59a35ca36d6eb52a0a043f385c5f67e8c39 (patch)
treee7227fe73ba7baf2b41d94f7ebc66eb20d0fd6dc /vcl/unx
parent6423a66abff68d421fc356d5df9e3193da59014d (diff)
WaE: short-reads/writes
Diffstat (limited to 'vcl/unx')
-rw-r--r--vcl/unx/generic/gdi/salprnpsp.cxx20
1 files changed, 15 insertions, 5 deletions
diff --git a/vcl/unx/generic/gdi/salprnpsp.cxx b/vcl/unx/generic/gdi/salprnpsp.cxx
index 009621a9e22e..dbee65c589dc 100644
--- a/vcl/unx/generic/gdi/salprnpsp.cxx
+++ b/vcl/unx/generic/gdi/salprnpsp.cxx
@@ -271,11 +271,16 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma
close( fd[0] );
char aBuffer[ 2048 ];
FILE* fp = fopen( aFilename.GetBuffer(), "r" );
- while( fp && ! feof( fp ) )
+ while (fp && !feof(fp))
{
- int nBytes = fread( aBuffer, 1, sizeof( aBuffer ), fp );
- if( nBytes )
- write( fd[ 1 ], aBuffer, nBytes );
+ size_t nBytesRead = fread(aBuffer, 1, sizeof( aBuffer ), fp);
+ if (nBytesRead )
+ {
+ size_t nBytesWritten = write(fd[1], aBuffer, nBytesRead);
+ OSL_ENSURE(nBytesWritten == nBytesRead, "short write");
+ if (nBytesWritten != nBytesRead)
+ break;
+ }
}
fclose( fp );
close( fd[ 1 ] );
@@ -1342,7 +1347,12 @@ sal_Bool PspSalPrinter::StartJob( const String* i_pFileName, const String& i_rJo
{
osl_readFile( pFile, &buffer[0], buffer.size(), &nBytesRead );
if( nBytesRead > 0 )
- fwrite( &buffer[0], 1, nBytesRead, fp );
+ {
+ size_t nBytesWritten = fwrite(&buffer[0], 1, nBytesRead, fp);
+ OSL_ENSURE(nBytesRead == nBytesWritten, "short write");
+ if (nBytesRead != nBytesWritten)
+ break;
+ }
} while( nBytesRead == buffer.size() );
rtl::OUStringBuffer aBuf( i_rJobName.Len() + 8 );
aBuf.append( i_rJobName );