From 83b1aa2e88f313c7d306a5421624b9b8be9f659d Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 4 Oct 2014 23:29:02 -0500 Subject: [PATCH] Fix undefined behaviour in TQClipboardWatcher::format This relates to Bug 1820 (cherry picked from commit dc8f5371804c0006ebefc8c0f72be442e6311ce4) --- src/kernel/qclipboard_x11.cpp | 15 +++++++-------- src/kernel/qmime.cpp | 3 ++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/kernel/qclipboard_x11.cpp b/src/kernel/qclipboard_x11.cpp index 73cdad4..11fda63 100644 --- a/src/kernel/qclipboard_x11.cpp +++ b/src/kernel/qclipboard_x11.cpp @@ -166,7 +166,7 @@ public: QByteArray getDataInFormat(Atom fmtatom) const; Atom atom; - QValueList formatList; + mutable QValueList formatList; }; @@ -1304,7 +1304,6 @@ const char* QClipboardWatcher::format( int n ) const // server round trips... static Atom xa_targets = *qt_xdnd_str_to_atom( "TARGETS" ); - QClipboardWatcher *that = (QClipboardWatcher *) this; QByteArray ba = getDataInFormat(xa_targets); if (ba.size() > 0) { Atom *unsorted_target = (Atom *) ba.data(); @@ -1337,21 +1336,21 @@ const char* QClipboardWatcher::format( int n ) const VQDEBUG(" format: %s", qt_xdnd_atom_to_str(target[i])); if ( target[i] == XA_PIXMAP ) - that->formatList.append("image/ppm"); + formatList.append("image/ppm"); else if ( target[i] == XA_STRING ) - that->formatList.append( "text/plain;charset=ISO-8859-1" ); + formatList.append( "text/plain;charset=ISO-8859-1" ); else if ( target[i] == qt_utf8_string ) - that->formatList.append( "text/plain;charset=UTF-8" ); + formatList.append( "text/plain;charset=UTF-8" ); else if ( target[i] == xa_text || target[i] == xa_compound_text ) - that->formatList.append( "text/plain" ); + formatList.append( "text/plain" ); else - that->formatList.append(qt_xdnd_atom_to_str(target[i])); + formatList.append(qt_xdnd_atom_to_str(target[i])); } delete []target; QDEBUG("QClipboardWatcher::format: %d formats available", - int(that->formatList.count())); + int(formatList.count())); } } diff --git a/src/kernel/qmime.cpp b/src/kernel/qmime.cpp index e50757d..d424b2e 100644 --- a/src/kernel/qmime.cpp +++ b/src/kernel/qmime.cpp @@ -139,8 +139,9 @@ bool QMimeSource::provides(const char* mimeType) const { const char* fmt; for (int i=0; (fmt = format(i)); i++) { - if ( !qstricmp(mimeType,fmt) ) + if ( !qstricmp(mimeType,fmt) ) { return TRUE; + } } return FALSE; }