aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Lima <hugo.lima@openbossa.org>2009-12-17 18:01:34 -0200
committerHugo Lima <hugo.lima@openbossa.org>2009-12-30 14:33:05 -0200
commit1613ca708021f927524c484d2a03791ed82aa39b (patch)
treee27a1c5ee91f9a8c42b1c5d7be2000f46a18d2ff
parent742d46f23f48018c2fafa036f30e01e6b55a8c2c (diff)
Fix the array of void pointers passed to slots avoiding memory corruption.
-rw-r--r--libpyside/abstractqobjectconnection.cpp2
-rw-r--r--libpyside/signalmanager.cpp6
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;