Skip to content

Commit e01fe14

Browse files
usiemsmrbean-bremen
authored andcommitted
Revert "More potential leak fixes and build fix"
This reverts part of commit 525ea41. # Not reverted: # build/python.prf
1 parent edc56b1 commit e01fe14

File tree

1 file changed

+21
-30
lines changed

1 file changed

+21
-30
lines changed

src/PythonQt.cpp

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,6 @@ void PythonQt_init_QtGuiBuiltin(PyObject*);
6868
void PythonQt_init_QtCoreBuiltin(PyObject*);
6969

7070

71-
static inline int PyModule_AddObject_DECREF(PyObject *module, const char *name, PyObject *value)
72-
{
73-
int ret = PyModule_AddObject(module, name, value);
74-
if (ret < 0)
75-
Py_XDECREF(value);
76-
return ret;
77-
}
78-
79-
8071
void PythonQt::init(int flags, const QByteArray& pythonQtModuleName)
8172
{
8273
if (!_self) {
@@ -253,9 +244,9 @@ void PythonQt::init(int flags, const QByteArray& pythonQtModuleName)
253244
for (unsigned int i = 0;i<16; i++) {
254245
PyObject* obj = PyObject_GetAttrString(qtNamespace, names[i]);
255246
if (obj) {
256-
PyModule_AddObject_DECREF(pack, names[i], obj);
247+
PyModule_AddObject(pack, names[i], obj);
257248
Py_INCREF(obj);
258-
PyModule_AddObject_DECREF(pack2, names[i], obj);
249+
PyModule_AddObject(pack2, names[i], obj);
259250
} else {
260251
std::cerr << "method not found " << names[i] << std::endl;
261252
}
@@ -277,19 +268,19 @@ void PythonQt::init(int flags, const QByteArray& pythonQtModuleName)
277268

278269
for (int i = 0; i<sizeof(enumValues)/sizeof(int); i++) {
279270
PyObject* obj = PyInt_FromLong(enumValues[i]);
280-
PyModule_AddObject_DECREF(pack, enumNames[i], obj);
271+
PyModule_AddObject(pack, enumNames[i], obj);
281272
Py_INCREF(obj);
282-
PyModule_AddObject_DECREF(pack2, enumNames[i], obj);
273+
PyModule_AddObject(pack2, enumNames[i], obj);
283274
}
284275

285276
_self->priv()->pythonQtModule().addObject("Debug", _self->priv()->_debugAPI);
286277

287278
Py_INCREF((PyObject*)&PythonQtSlotDecorator_Type);
288279
Py_INCREF((PyObject*)&PythonQtSignalFunction_Type);
289280
Py_INCREF((PyObject*)&PythonQtProperty_Type);
290-
PyModule_AddObject_DECREF(pack, "Slot", (PyObject*)&PythonQtSlotDecorator_Type);
291-
PyModule_AddObject_DECREF(pack, "Signal", (PyObject*)&PythonQtSignalFunction_Type);
292-
PyModule_AddObject_DECREF(pack, "Property", (PyObject*)&PythonQtProperty_Type);
281+
PyModule_AddObject(pack, "Slot", (PyObject*)&PythonQtSlotDecorator_Type);
282+
PyModule_AddObject(pack, "Signal", (PyObject*)&PythonQtSignalFunction_Type);
283+
PyModule_AddObject(pack, "Property", (PyObject*)&PythonQtProperty_Type);
293284

294285
}
295286
}
@@ -432,11 +423,11 @@ void PythonQt::setRedirectStdInCallback(PythonQtInputChangedCB* callback, void *
432423
((PythonQtStdInRedirect*)in.object())->_cb = callback;
433424
((PythonQtStdInRedirect*)in.object())->_callData = callbackData;
434425
// replace the built in file objects with our own objects
435-
PyModule_AddObject_DECREF(sys.object(), "stdin", in);
426+
PyModule_AddObject(sys.object(), "stdin", in);
436427

437428
// Backup custom 'stdin' into 'pythonqt_stdin'
438429
Py_INCREF(in); // AddObject steals the reference, so increment it
439-
PyModule_AddObject_DECREF(sys.object(), "pythonqt_stdin", in);
430+
PyModule_AddObject(sys.object(), "pythonqt_stdin", in);
440431
}
441432

442433
void PythonQt::setRedirectStdInCallbackEnabled(bool enabled)
@@ -512,7 +503,7 @@ void PythonQtPrivate::registerClass(const QMetaObject* metaobject, const char* p
512503
PyObject* classWrapper = info->pythonQtClassWrapper();
513504
// AddObject steals a reference, so we need to INCREF
514505
Py_INCREF(classWrapper);
515-
PyModule_AddObject_DECREF(module, info->className(), classWrapper);
506+
PyModule_AddObject(module, info->className(), classWrapper);
516507
}
517508
if (first) {
518509
first = false;
@@ -546,13 +537,13 @@ void PythonQtPrivate::createPythonQtClassWrapper(PythonQtClassInfo* info, const
546537
outerClassInfo->addNestedClass(info);
547538
} else {
548539
Py_INCREF(pyobj);
549-
PyModule_AddObject_DECREF(pack, info->className(), pyobj);
540+
PyModule_AddObject(pack, info->className(), pyobj);
550541
}
551542
if (!module && package && strncmp(package, "Qt", 2) == 0) {
552543
// since PyModule_AddObject steals the reference, we need a incref once more...
553544
Py_INCREF(pyobj);
554545
// put all qt objects into Qt as well
555-
PyModule_AddObject_DECREF(packageByName("Qt"), info->className(), pyobj);
546+
PyModule_AddObject(packageByName("Qt"), info->className(), pyobj);
556547
}
557548
info->setPythonQtClassWrapper(pyobj);
558549
Py_DECREF(pyobj);
@@ -1080,7 +1071,7 @@ void PythonQt::addObject(PyObject* object, const QString& name, QObject* qObject
10801071
PyObject *wrappedObject = _p->wrapQObject(qObject);
10811072
if (PyModule_Check(object)) {
10821073
Py_XINCREF(wrappedObject);
1083-
PyModule_AddObject_DECREF(object, QStringToPythonCharPointer(name), wrappedObject);
1074+
PyModule_AddObject(object, QStringToPythonCharPointer(name), wrappedObject);
10841075
} else if (PyDict_Check(object)) {
10851076
PyDict_SetItemString(object, QStringToPythonCharPointer(name), wrappedObject);
10861077
} else {
@@ -1094,7 +1085,7 @@ void PythonQt::addVariable(PyObject* object, const QString& name, const QVariant
10941085
PyObject *value = PythonQtConv::QVariantToPyObject(v);
10951086
if (PyModule_Check(object)) {
10961087
Py_XINCREF(value);
1097-
PyModule_AddObject_DECREF(object, QStringToPythonCharPointer(name), value);
1088+
PyModule_AddObject(object, QStringToPythonCharPointer(name), value);
10981089
} else if (PyDict_Check(object)) {
10991090
PyDict_SetItemString(object, QStringToPythonCharPointer(name), value);
11001091
} else {
@@ -1706,12 +1697,12 @@ void PythonQt::overwriteSysPath(const QStringList& paths)
17061697
foreach(QString path, paths) {
17071698
nativePaths << QDir::toNativeSeparators(path);
17081699
}
1709-
PyModule_AddObject_DECREF(sys, "path", PythonQtConv::QStringListToPyList(nativePaths));
1700+
PyModule_AddObject(sys, "path", PythonQtConv::QStringListToPyList(nativePaths));
17101701
}
17111702

17121703
void PythonQt::setModuleImportPath(PyObject* module, const QStringList& paths)
17131704
{
1714-
PyModule_AddObject_DECREF(module, "__path__", PythonQtConv::QStringListToPyList(paths));
1705+
PyModule_AddObject(module, "__path__", PythonQtConv::QStringListToPyList(paths));
17151706
}
17161707

17171708
void PythonQt::stdOutRedirectCB(const QString& str)
@@ -1789,7 +1780,7 @@ void PythonQt::initPythonQtModule(bool redirectStdOut, const QByteArray& pythonQ
17891780
_p->_pythonQtModuleName = name;
17901781

17911782
Py_INCREF((PyObject*)&PythonQtBoolResult_Type);
1792-
PyModule_AddObject_DECREF(_p->pythonQtModule().object(), "BoolResult", (PyObject*)&PythonQtBoolResult_Type);
1783+
PyModule_AddObject(_p->pythonQtModule().object(), "BoolResult", (PyObject*)&PythonQtBoolResult_Type);
17931784
PythonQtObjectPtr sys;
17941785
sys.setNewRef(PyImport_ImportModule("sys"));
17951786

@@ -1802,8 +1793,8 @@ void PythonQt::initPythonQtModule(bool redirectStdOut, const QByteArray& pythonQ
18021793
err = PythonQtStdOutRedirectType.tp_new(&PythonQtStdOutRedirectType,NULL, NULL);
18031794
((PythonQtStdOutRedirect*)err.object())->_cb = stdErrRedirectCB;
18041795
// replace the built in file objects with our own objects
1805-
PyModule_AddObject_DECREF(sys, "stdout", out);
1806-
PyModule_AddObject_DECREF(sys, "stderr", err);
1796+
PyModule_AddObject(sys, "stdout", out);
1797+
PyModule_AddObject(sys, "stderr", err);
18071798
}
18081799

18091800
// add PythonQt to the list of builtin module names
@@ -1817,7 +1808,7 @@ void PythonQt::initPythonQtModule(bool redirectStdOut, const QByteArray& pythonQ
18171808
PyTuple_SetItem(module_names, i, val);
18181809
}
18191810
PyTuple_SetItem(module_names, old_size, PyString_FromString(name.constData()));
1820-
PyModule_AddObject_DECREF(sys.object(), "builtin_module_names", module_names);
1811+
PyModule_AddObject(sys.object(), "builtin_module_names", module_names);
18211812
}
18221813
Py_XDECREF(old_module_names);
18231814

@@ -2000,7 +1991,7 @@ PyObject* PythonQtPrivate::packageByName(const char* name)
20001991
_packages.insert(name, v);
20011992
// AddObject steals the reference, so increment it!
20021993
Py_INCREF(v);
2003-
PyModule_AddObject_DECREF(_pythonQtModule, name, v);
1994+
PyModule_AddObject(_pythonQtModule, name, v);
20041995
}
20051996
return v;
20061997
}

0 commit comments

Comments
 (0)