QTBUG-14724_close_orphaned_file_descriptors_after_printing
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Tue, 5 Feb 2013 21:52:29 +0000 (21:52 +0000)
committerLisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
Tue, 5 Feb 2013 21:52:29 +0000 (21:52 +0000)
 What happened: In QPdfBaseEnginePrivate::openPrintDevice() noone
 remembers the file descriptor opened by tempFile() which is a call to
 the cups library to cupsTempFile()

 Later in closePrintDevice the check for fd<0 fails, so no one closes
 the file descriptor. If you later remove the file, the descriptor is
 still open and cannot removed until you close the application.

 If you print 20 times and more during your application is running and
 you print out large files (complicate forms with a lot of elements
 produces files with 3-4 MByte) your temporary file can be full, but
 you don't see (with ls) files in it.

Bug: https://bugreports.qt.nokia.com/browse/QTBUG-14724
Author: Georg Scherzer

Gbp-Pq: Name QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch

src/gui/painting/qpdf.cpp

index 6cdee67fd6b83b7242fbac73d2fb9b0656ce3342..0aad4dee490d46d64a2c79b04ff09c53f1e1979c 100644 (file)
@@ -1686,6 +1686,7 @@ bool QPdfBaseEnginePrivate::openPrintDevice()
         cupsTempFile = ret.second;
         outDevice = new QFile();
         static_cast<QFile *>(outDevice)->open(ret.first, QIODevice::WriteOnly);
+        fd = ret.first;
 #endif
 #ifndef QT_NO_LPR
     } else {