summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-04-15 01:00:18 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-04-15 01:00:18 +0200
commit4aa6f54fec9d199f97759945118451c52767b2ce (patch)
tree5dc695cd4718437b5015aaef3a02463c61bc5dc2 /src/gui/painting
parent369e7572bac94bb5b83ef881012fdc4a86829496 (diff)
parentd5ac11891d8237ca2f02390ffd0ff103578b520e (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qpdf.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index e421055ef3..e58f9cee4c 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -2045,7 +2045,6 @@ void QPdfEnginePrivate::printString(const QString &string)
}
-// For strings up to 10000 bytes only !
void QPdfEnginePrivate::xprintf(const char* fmt, ...)
{
if (!stream)
@@ -2057,12 +2056,18 @@ void QPdfEnginePrivate::xprintf(const char* fmt, ...)
va_list args;
va_start(args, fmt);
int bufsize = qvsnprintf(buf, msize, fmt, args);
-
- Q_ASSERT(bufsize<msize);
-
va_end(args);
- stream->writeRawData(buf, bufsize);
+ if (Q_LIKELY(bufsize < msize)) {
+ stream->writeRawData(buf, bufsize);
+ } else {
+ // Fallback for abnormal cases
+ QScopedArrayPointer<char> tmpbuf(new char[bufsize + 1]);
+ va_start(args, fmt);
+ bufsize = qvsnprintf(tmpbuf.data(), bufsize + 1, fmt, args);
+ va_end(args);
+ stream->writeRawData(tmpbuf.data(), bufsize);
+ }
streampos += bufsize;
}