diff options
author | Christian Tismer <tismer@stackless.com> | 2020-11-26 13:45:49 +0100 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2020-11-26 16:36:03 +0000 |
commit | fbd3ff2256a338a04f08923620216076be64106d (patch) | |
tree | c39b2b66388761ed8325a8ba1ce797cdf9da7bee | |
parent | 86b0e5164da3ec9dc82c2bf6f0f7f012294f6e9d (diff) |
property: fix an eight year olde bug that showed after the overhaul
The modernisation of pysideproperty.cpp creates an error when
using
@Property(str, constant=True)
This could also be provoked before the improved version of
Property by
def getVal(self):
return self.val
variable = Property(str, getVal, constant=True, fset=None)
because the None/NULL - handling was incomplete.
Change-Id: Ib39dd3bdb62ba928164faa465ee3dd743262e245
Fixes: PYSIDE-1426
Pick-to: 5.15
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r-- | sources/pyside6/libpyside/pysideproperty.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sources/pyside6/libpyside/pysideproperty.cpp b/sources/pyside6/libpyside/pysideproperty.cpp index a8757108b..857041ea0 100644 --- a/sources/pyside6/libpyside/pysideproperty.cpp +++ b/sources/pyside6/libpyside/pysideproperty.cpp @@ -213,9 +213,10 @@ static int qpropertyTpInit(PyObject *self, PyObject *args, PyObject *kwds) if (pData->typeName.isEmpty()) PyErr_SetString(PyExc_TypeError, "Invalid property type or type name."); - else if (pData->constant && (pData->fset || pData->notify)) - PyErr_SetString(PyExc_TypeError, "A constant property cannot have a WRITE method or a NOTIFY signal."); - + else if (pData->constant && ((pData->fset && pData->fset != Py_None) + || (pData->notify && pData->notify != Py_None))) + PyErr_SetString(PyExc_TypeError, "A constant property cannot have a WRITE method or a " + "NOTIFY signal."); if (!PyErr_Occurred()) { Py_XINCREF(pData->fget); Py_XINCREF(pData->fset); |