diff options
author | Hugo Lima <hugo.lima@openbossa.org> | 2009-12-17 18:01:34 -0200 |
---|---|---|
committer | Hugo Lima <hugo.lima@openbossa.org> | 2009-12-30 14:33:05 -0200 |
commit | 1613ca708021f927524c484d2a03791ed82aa39b (patch) | |
tree | e27a1c5ee91f9a8c42b1c5d7be2000f46a18d2ff | |
parent | 742d46f23f48018c2fafa036f30e01e6b55a8c2c (diff) |
Fix the array of void pointers passed to slots avoiding memory corruption.
-rw-r--r-- | libpyside/abstractqobjectconnection.cpp | 2 | ||||
-rw-r--r-- | libpyside/signalmanager.cpp | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/libpyside/abstractqobjectconnection.cpp b/libpyside/abstractqobjectconnection.cpp index 65d47486e..1ecd5ae58 100644 --- a/libpyside/abstractqobjectconnection.cpp +++ b/libpyside/abstractqobjectconnection.cpp @@ -51,7 +51,7 @@ void AbstractQObjectConnection::trigger(void** args) int numArgs = m_signalArgs.count(); PyObject* pyArgs = PyTuple_New(numArgs); for (int i = 0; i < numArgs; ++i) { - PyObject* arg = TypeResolver::get(m_signalArgs[i])->toPython(args[i]); + PyObject* arg = TypeResolver::get(m_signalArgs[i])->toPython(args[i+1]); PyTuple_SET_ITEM(pyArgs, i, arg); } trigger(pyArgs); diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp index e9f9b7c2b..f6624dc8d 100644 --- a/libpyside/signalmanager.cpp +++ b/libpyside/signalmanager.cpp @@ -159,9 +159,9 @@ bool SignalManager::emitSignal(QObject* source, const char* signal, PyObject* ar if (signalIndex != -1) { QStringList argTypes = getArgsFromSignature(signal); void* signalArgs[argsGiven+1]; - - for (int i = 0; i < argsGiven; i++) - signalArgs[i] = TypeResolver::get(argTypes[i])->toCpp(PySequence_GetItem(args, i)); + signalArgs[0] = 0; + for (int i = 0; i < argsGiven; ++i) + signalArgs[i+1] = TypeResolver::get(argTypes[i])->toCpp(PySequence_GetItem(args, i)); QMetaObject::activate(source, signalIndex, signalArgs); return true; |