summaryrefslogtreecommitdiffstats
path: root/source/l/qt/QTBUG-14724_close_orphaned_file_descriptors_after_printing.patch
diff options
context:
space:
mode:
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.patch37
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 000000000..9acae10c8
--- /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 {