Check for invalid signal or slot name.

Reviewer: Hugo Parente Lima <hugo.lima@openbossa.org>,
          Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
Renato Filho 2010-06-22 18:08:25 -03:00
commit b1f7791a72
2 changed files with 8 additions and 2 deletions

View file

@ -25,6 +25,9 @@ static bool getReceiver(PyObject *callback, QObject **receiver, PyObject **self)
static bool qobjectConnect(QObject* source, const char* signal, QObject* receiver, const char* slot, Qt::ConnectionType type) static bool qobjectConnect(QObject* source, const char* signal, QObject* receiver, const char* slot, Qt::ConnectionType type)
{ {
if (!signal || !slot)
return false;
if (!PySide::checkSignal(signal)) if (!PySide::checkSignal(signal))
return false; return false;
signal++; signal++;
@ -39,7 +42,7 @@ static bool qobjectConnect(QObject* source, const char* signal, QObject* receive
static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject* callback, Qt::ConnectionType type) static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject* callback, Qt::ConnectionType type)
{ {
if (!PySide::checkSignal(signal)) if (!signal || !PySide::checkSignal(signal))
return false; return false;
signal++; signal++;

View file

@ -82,11 +82,14 @@ using namespace PySide;
bool PySide::isSignal(const char* signal) bool PySide::isSignal(const char* signal)
{ {
return signal[0] == PYSIDE_SIGNAL; return (signal && signal[0] == PYSIDE_SIGNAL);
} }
bool PySide::checkSignal(const char* signal) bool PySide::checkSignal(const char* signal)
{ {
if (!signal)
return false;
if (signal[0] != PYSIDE_SIGNAL) { if (signal[0] != PYSIDE_SIGNAL) {
PyErr_SetString(PyExc_TypeError, "Use the function PySide.QtCore.SIGNAL on signals"); PyErr_SetString(PyExc_TypeError, "Use the function PySide.QtCore.SIGNAL on signals");
return false; return false;