From 45d37022956238273d1afcd7f2083c844987e933 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Fri, 11 Nov 2011 12:10:22 +0100 Subject: Don't directly access QList contents The existing code doesn't work on 64bit machines. We must first convert the list into a QVector, which guarantees that elements are laid out correctly as an array. Merge-request: 1467 Reviewed-by: thiago (cherry picked from commit 00020eed3fa948f69cfa776e92121edec6f975cc) Change-Id: I00020eed3fa948f69cfa776e92121edec6f975cc Reviewed-by: Thiago Macieira --- src/dbus/qdbuspendingcall.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/dbus') diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp index ea847421d0..2278db4394 100644 --- a/src/dbus/qdbuspendingcall.cpp +++ b/src/dbus/qdbuspendingcall.cpp @@ -180,9 +180,12 @@ bool QDBusPendingCallPrivate::setReplyCallback(QObject *target, const char *memb if (metaTypes.at(count) == QDBusMetaTypeId::message) --count; - // QList is actually a vector - // kids, don't try this at home - setMetaTypes(count, count ? &metaTypes.at(1) : 0); + if (count == 0) { + setMetaTypes(count, 0); + } else { + QVector types = QVector::fromList(metaTypes); + setMetaTypes(count, types.constData() + 1); + } return true; } -- cgit v1.2.3