aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/pyside2/libpyside/signalmanager.cpp.in13
-rw-r--r--sources/pyside2/libpyside/signalmanager.h9
2 files changed, 17 insertions, 5 deletions
diff --git a/sources/pyside2/libpyside/signalmanager.cpp.in b/sources/pyside2/libpyside/signalmanager.cpp.in
index ea0d692d8..9e2a1a9af 100644
--- a/sources/pyside2/libpyside/signalmanager.cpp.in
+++ b/sources/pyside2/libpyside/signalmanager.cpp.in
@@ -142,11 +142,16 @@ PyObjectWrapper::~PyObjectWrapper()
Py_XDECREF(m_me);
}
-PyObjectWrapper& PyObjectWrapper::operator=(const PySide::PyObjectWrapper& other)
+void PyObjectWrapper::reset(PyObject *o)
{
- Py_XINCREF(other.m_me);
+ Py_XINCREF(o);
Py_XDECREF(m_me);
- m_me = other.m_me;
+ m_me = o;
+}
+
+PyObjectWrapper& PyObjectWrapper::operator=(const PySide::PyObjectWrapper& other)
+{
+ reset(other.m_me);
return *this;
}
@@ -207,7 +212,7 @@ QDataStream &operator>>(QDataStream& in, PyObjectWrapper& myObj)
Shiboken::AutoDecRef value(PyObject_CallFunctionObjArgs(eval_func, pyCode.object(), 0));
if (!value.object())
value.reset(Py_None);
- myObj = PyObjectWrapper(value);
+ myObj.reset(value);
return in;
}
diff --git a/sources/pyside2/libpyside/signalmanager.h b/sources/pyside2/libpyside/signalmanager.h
index c4d57c333..745c1e55a 100644
--- a/sources/pyside2/libpyside/signalmanager.h
+++ b/sources/pyside2/libpyside/signalmanager.h
@@ -53,12 +53,19 @@ namespace PySide
class PYSIDE_API PyObjectWrapper
{
public:
+ PyObjectWrapper(PyObjectWrapper&&) = delete;
+ PyObjectWrapper& operator=(PyObjectWrapper &&) = delete;
+
PyObjectWrapper();
explicit PyObjectWrapper(PyObject* me);
PyObjectWrapper(const PyObjectWrapper &other);
+ PyObjectWrapper& operator=(const PyObjectWrapper &other);
+
+ void reset(PyObject *o);
+
~PyObjectWrapper();
operator PyObject*() const;
- PyObjectWrapper& operator=(const PyObjectWrapper &other);
+
private:
PyObject* m_me;
};