From 23c1001c79af9cbb3cd2d8a301e2e315b1f833b2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 23 Oct 2020 18:13:46 +0200 Subject: pysideproperty.cpp: Fix warning about offsetof MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- sources/pyside2/libpyside/pysideproperty.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'sources/pyside2') 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(self); - PySidePropertyPrivate *pData = data->d; - auto funcptr = reinterpret_cast(pData) + offset; - auto func = *reinterpret_cast(funcptr); + auto func = reinterpret_cast(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(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(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(self)->d->fdel; + auto ret = func != nullptr ? func : Py_None; + Py_INCREF(ret); + return ret; } static PyObject *qPropertyDocGet(PyObject *self, void *) -- cgit v1.2.3