Fix assert in libdbus-1 from tst_qdbusmarshall.
Serializing an empty object path was crashing with > arguments to dbus_message_iter_append_basic() were incorrect, > assertion "_dbus_check_is_valid_path (*string_p)" failed in file > dbus-message.c line 2555. Thiago says this depends on the libdbus build settings, which is why it didn't happen to everyone. OpenSUSE-12.1 here. Change-Id: I657d28d5d915706a22abfd273aad88d20e2d112a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
c878e2803b
commit
ce4fb74ecd
|
|
@ -124,19 +124,23 @@ void QDBusMarshaller::append(const QString &arg)
|
|||
inline void QDBusMarshaller::append(const QDBusObjectPath &arg)
|
||||
{
|
||||
QByteArray data = arg.path().toUtf8();
|
||||
if (!ba && data.isEmpty())
|
||||
if (!ba && data.isEmpty()) {
|
||||
error(QLatin1String("Invalid object path passed in arguments"));
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
|
||||
} else {
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
|
||||
}
|
||||
}
|
||||
|
||||
inline void QDBusMarshaller::append(const QDBusSignature &arg)
|
||||
{
|
||||
QByteArray data = arg.signature().toUtf8();
|
||||
if (!ba && data.isEmpty())
|
||||
if (!ba && data.isEmpty()) {
|
||||
error(QLatin1String("Invalid signature passed in arguments"));
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
|
||||
} else {
|
||||
const char *cdata = data.constData();
|
||||
qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
|
||||
}
|
||||
}
|
||||
|
||||
inline void QDBusMarshaller::append(const QDBusUnixFileDescriptor &arg)
|
||||
|
|
|
|||
Loading…
Reference in New Issue