diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-23 18:13:46 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-26 09:23:55 +0000 |
commit | 23c1001c79af9cbb3cd2d8a301e2e315b1f833b2 (patch) | |
tree | b569867a8ccd0591169889e497397510c19a5089 /sources | |
parent | 56c37b3b95968b24bfb737698c0a4ca94d0b8802 (diff) |
pysideproperty.cpp: Fix warning about offsetof
Return the functions directly, fixing (g++ 9.3.0):
sources/pyside2/libpyside/pysideproperty.cpp:331:42: warning: offsetof within non-standard-layout type ‘PySidePropertyPrivate’ is conditionally-supported [-Winvalid-offsetof]
Pick-to: 5.15
Change-Id: I98f57d05c4c4163e06431c579537b4db01c656e6
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources')
-rw-r--r-- | sources/pyside2/libpyside/pysideproperty.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/sources/pyside2/libpyside/pysideproperty.cpp b/sources/pyside2/libpyside/pysideproperty.cpp index d79a46ade..bcb2ab356 100644 --- a/sources/pyside2/libpyside/pysideproperty.cpp +++ b/sources/pyside2/libpyside/pysideproperty.cpp @@ -315,35 +315,37 @@ static PyObject *qPropertyCall(PyObject *self, PyObject *args, PyObject * /* kw } // PYSIDE-1019: Provide the same getters as Pythons `PyProperty`. -static PyObject *_property_func(PyObject *self, ssize_t offset) + +static PyObject *qProperty_fget(PyObject *self, void *) { - auto data = reinterpret_cast<PySideProperty *>(self); - PySidePropertyPrivate *pData = data->d; - auto funcptr = reinterpret_cast<char *>(pData) + offset; - auto func = *reinterpret_cast<PyObject **>(funcptr); + auto func = reinterpret_cast<PySideProperty *>(self)->d->fget; auto ret = func != nullptr ? func : Py_None; Py_INCREF(ret); return ret; } -static PyObject *qProperty_fget(PyObject *self, void *) -{ - return _property_func(self, offsetof(PySidePropertyPrivate, fget)); -} - static PyObject *qProperty_fset(PyObject *self, void *) { - return _property_func(self, offsetof(PySidePropertyPrivate, fset)); + auto func = reinterpret_cast<PySideProperty *>(self)->d->fset; + auto ret = func != nullptr ? func : Py_None; + Py_INCREF(ret); + return ret; } static PyObject *qProperty_freset(PyObject *self, void *) { - return _property_func(self, offsetof(PySidePropertyPrivate, freset)); + auto func = reinterpret_cast<PySideProperty *>(self)->d->freset; + auto ret = func != nullptr ? func : Py_None; + Py_INCREF(ret); + return ret; } static PyObject *qProperty_fdel(PyObject *self, void *) { - return _property_func(self, offsetof(PySidePropertyPrivate, fdel)); + auto func = reinterpret_cast<PySideProperty *>(self)->d->fdel; + auto ret = func != nullptr ? func : Py_None; + Py_INCREF(ret); + return ret; } static PyObject *qPropertyDocGet(PyObject *self, void *) |