Fix undefined behaviour in TQClipboardWatcher::format

This relates to Bug 1820
(cherry picked from commit dc8f537180)
v3.5.13-sru
Timothy Pearson 10 years ago committed by Slávek Banko
parent fa671f0185
commit 83b1aa2e88

@ -166,7 +166,7 @@ public:
QByteArray getDataInFormat(Atom fmtatom) const;
Atom atom;
QValueList<const char *> formatList;
mutable QValueList<const char *> 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()));
}
}

@ -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;
}

Loading…
Cancel
Save