aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libpyside/pyside.cpp6
-rw-r--r--tests/QtGui/bug_696.py10
2 files changed, 12 insertions, 4 deletions
diff --git a/libpyside/pyside.cpp b/libpyside/pyside.cpp
index 7fe39ead7..ec710a517 100644
--- a/libpyside/pyside.cpp
+++ b/libpyside/pyside.cpp
@@ -228,10 +228,10 @@ void initQObjectSubType(SbkObjectType* type, PyObject* args, PyObject* kwds)
PyObject* getMetaDataFromQObject(QObject* cppSelf, PyObject* self, PyObject* name)
{
- if (!Shiboken::Object::isValid(self))
- return 0;
-
PyObject* attr = PyObject_GenericGetAttr(self, name);
+ if (!Shiboken::Object::isValid(reinterpret_cast<SbkObject*>(self), false))
+ return attr;
+
if (attr && Property::isPropertyType(attr)) {
PyObject *value = Property::getValue(reinterpret_cast<PySideProperty*>(attr), self);
if (!value)
diff --git a/tests/QtGui/bug_696.py b/tests/QtGui/bug_696.py
index b165d042c..ff62e7abe 100644
--- a/tests/QtGui/bug_696.py
+++ b/tests/QtGui/bug_696.py
@@ -34,9 +34,17 @@ class MainWindow(QMainWindow):
def __init__(self, *args):
self._menu = QMenu(self.dontexist) # attribute called with invalid C++ object
+class MainWindow2(QMainWindow):
+ def __init__(self):
+ self.show()
+
class Bug696(UsesQApplication):
def testContructorInitialization(self):
- self.assertRaises(RuntimeError, MainWindow)
+ self.assertRaises(AttributeError, MainWindow)
+
+ def testContructorInitializationAndCPPFunction(self):
+ self.assertRaises(RuntimeError, MainWindow2)
+
if __name__ == '__main__':
unittest.main()