diff options
Diffstat (limited to 'source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch')
-rw-r--r-- | source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch b/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch new file mode 100644 index 00000000..9acae10c --- /dev/null +++ b/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch @@ -0,0 +1,37 @@ +Description: + QPainter together with QPrinter leaves a lot of temporary files in + /tmp with every printout. That is a problem for embedded devices, + which have not such a large /tmp-partition. We are using 80 MByte as + tmpfs, i.e. in RAM. After some printounts cups deactivates the printer + because there is no space to copy the temporary files to /tmp. + + 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 + +--- + src/gui/painting/qpdf.cpp | 1 + + 1 file changed, 1 insertion(+) + +--- a/src/gui/painting/qpdf.cpp ++++ b/src/gui/painting/qpdf.cpp +@@ -1686,6 +1686,7 @@ bool QPdfBaseEnginePrivate::openPrintDev + cupsTempFile = ret.second; + outDevice = new QFile(); + static_cast<QFile *>(outDevice)->open(ret.first, QIODevice::WriteOnly); ++ fd = ret.first; + #endif + #ifndef QT_NO_LPR + } else { |