aboutsummaryrefslogtreecommitdiffstats
path: root/sources
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-23 18:13:46 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-26 09:23:55 +0000
commit23c1001c79af9cbb3cd2d8a301e2e315b1f833b2 (patch)
treeb569867a8ccd0591169889e497397510c19a5089 /sources
parent56c37b3b95968b24bfb737698c0a4ca94d0b8802 (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.cpp28
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 *)