diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-05-16 15:02:23 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-05-27 09:16:44 +0200 |
| commit | 2f37b7084f71595dab16099d75ea1156a8827c33 (patch) | |
| tree | dd92b0b24f85219835e1216bfa8fa8c149621038 /sources/pyside6/libpyside/pysidesignal.cpp | |
| parent | 18faf1283cd6c3b0d606234b8316759bf347946d (diff) | |
libpyside: Remove short circuit signal handling
There was a "Short circuit" code path triggering
on QMetaMethod signal signatures without parentheses,
which is apparently dead.
Task-number: PYSIDE-2667
Change-Id: I68c4c636ea224a7691e76286ed43f5aaaa6d4bd7
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysidesignal.cpp')
| -rw-r--r-- | sources/pyside6/libpyside/pysidesignal.cpp | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/sources/pyside6/libpyside/pysidesignal.cpp b/sources/pyside6/libpyside/pysidesignal.cpp index 11e07cb04..35a6e7ef9 100644 --- a/sources/pyside6/libpyside/pysidesignal.cpp +++ b/sources/pyside6/libpyside/pysidesignal.cpp @@ -1187,13 +1187,11 @@ EmitterData getEmitterData(PySideSignalInstance *signal) return result; } -QByteArrayList getArgsFromSignature(const char *signature, bool *isShortCircuit) +QByteArrayList getArgsFromSignature(const char *signature) { QByteArray qsignature = QByteArray(signature).trimmed(); QByteArrayList result; - if (isShortCircuit) - *isShortCircuit = !qsignature.contains(u'('); if (qsignature.contains("()") || qsignature.contains("(void)")) return result; if (qsignature.endsWith(')')) { @@ -1277,24 +1275,21 @@ QByteArray getCallbackSignature(const char *signal, QObject *receiver, functionName = Shiboken::String::toCString(slotArgs.functionName); Q_ASSERT(!functionName.isEmpty()); - bool isShortCircuit = false; - if (functionName.startsWith('<') && functionName.endsWith('>')) { // fix "<lambda>" functionName[0] = '_'; functionName[functionName.size() - 1] = '_'; } QByteArray signature = encodeName ? codeCallbackName(callback, functionName) : functionName; - QByteArrayList args = getArgsFromSignature(signal, &isShortCircuit); + QByteArrayList args = getArgsFromSignature(signal); - if (!isShortCircuit) { - signature.append(u'('); - if (numArgs == -1) - numArgs = std::numeric_limits<qsizetype>::max(); + signature.append(u'('); + if (numArgs != -1) { while (!args.isEmpty() && (args.size() > (numArgs - useSelf))) args.removeLast(); - signature.append(args.join(',')); - signature.append(')'); } + signature.append(args.join(',')); + signature.append(')'); + return signature; } |
