aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-05-16 15:02:23 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-05-27 09:16:44 +0200
commit2f37b7084f71595dab16099d75ea1156a8827c33 (patch)
treedd92b0b24f85219835e1216bfa8fa8c149621038 /sources/pyside6/libpyside/pysidesignal.cpp
parent18faf1283cd6c3b0d606234b8316759bf347946d (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.cpp19
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;
}