From 62d4437e2d0df7a0706b564519e8fb26303f1e9a Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Fri, 17 Dec 2010 11:00:24 -0300 Subject: Fixed code generation for virtual method ownership release of returned value. The value returned from Python to C++ shouldn't have its reference counting decremented after Python transferring ownership to C++. --- generator/cppgenerator.cpp | 4 +--- tests/samplebinding/modelview_test.py | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp index 8158fe156..f1e900f36 100644 --- a/generator/cppgenerator.cpp +++ b/generator/cppgenerator.cpp @@ -794,13 +794,11 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu s << (argMod.index - 1) << "));" << endl; } else if (argMod.ownerships.contains(TypeSystem::NativeCode)) { if (argMod.index == 0 && argMod.ownerships[TypeSystem::NativeCode] == TypeSystem::CppOwnership) { - s << INDENT << "if (Shiboken::Object::checkType(" PYTHON_RETURN_VAR ")) {" << endl; + s << INDENT << "if (Shiboken::Object::checkType(" PYTHON_RETURN_VAR "))" << endl; { Indentation indent(INDENT); s << INDENT << "Shiboken::Object::releaseOwnership(" PYTHON_RETURN_VAR ");" << endl; - s << INDENT << "Py_DECREF((PyObject*) " PYTHON_RETURN_VAR ");" << endl; } - s << INDENT << '}' << endl; } } } diff --git a/tests/samplebinding/modelview_test.py b/tests/samplebinding/modelview_test.py index 9f86166d0..7b9bfe7b7 100644 --- a/tests/samplebinding/modelview_test.py +++ b/tests/samplebinding/modelview_test.py @@ -57,7 +57,7 @@ class ModelViewTest(unittest.TestCase): model = ListModelDoesntKeepsReference() view = ObjectView(model) obj = view.getRawModelData() - self.assertEqual(type(obj), ObjectType) + self.assertEqual(type(obj), MyObject) self.assertEqual(obj.objectName(), object_name) def testListModelKeepsReference(self): -- cgit v1.2.3