[Libreoffice-commits] .: vcl/unx

Caolán McNamara caolan at kemper.freedesktop.org
Tue Jun 21 09:24:36 PDT 2011


 vcl/unx/generic/gdi/salprnpsp.cxx |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

New commits:
commit 8cf74a5760c0f590df2fa7bd812cd6f112ccefde
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Jun 21 10:47:07 2011 +0100

    WaE: short-reads/writes

diff --git a/vcl/unx/generic/gdi/salprnpsp.cxx b/vcl/unx/generic/gdi/salprnpsp.cxx
index 85bd447..7c3b969 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 );


More information about the Libreoffice-commits mailing list