aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSavin Zlobec <savin.zlobec@gmail.com>2017-02-15 11:09:18 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2017-03-21 10:32:20 +0000
commit44ae7457c8e69e1db0ade7a614aa292f169f0d9d (patch)
tree28ea3c6852edf0e7c6bfdd1cac393ef70d285c92
parentca7e25ab0cc5b0d093a9bc5afff837f6e8ab6a8e (diff)
Fix pointer to temporary memory in PySide::getMetaDataFromQObject
This caused issues when trying to retrieve signals defined in QML, apart from the fact that it caused undefined behavior. Task-number: PYSIDE-484 Change-Id: I335e30bda2e293c60f9b4dc68e19b183a75a74be Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r--libpyside/pyside.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/libpyside/pyside.cpp b/libpyside/pyside.cpp
index 59934286..7d05f45a 100644
--- a/libpyside/pyside.cpp
+++ b/libpyside/pyside.cpp
@@ -271,7 +271,8 @@ PyObject* getMetaDataFromQObject(QObject* cppSelf, PyObject* self, PyObject* nam
QList<QMetaMethod> signalList;
for(int i=0, i_max = metaObject->methodCount(); i < i_max; i++) {
QMetaMethod method = metaObject->method(i);
- const char* methSig = method.methodSignature();
+ const QByteArray methSig_ = method.methodSignature();
+ const char *methSig = methSig_.constData();
bool methMacth = !std::strncmp(cname, methSig, cnameLen) && methSig[cnameLen] == '(';
if (methMacth) {
if (method.methodType() == QMetaMethod::Signal) {