From db8368f5353494c36aae40d36a214877f5a93940 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 11 Aug 2021 16:57:39 +0200 Subject: QMetaEnum: stop parsing when an invalid key is found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old code obfuscated the algorithm by or'ing -1 into the return value, which is equivalent to setting it to -1 on two's complement architectures (which C++ these days requires), and happily continuing to accumulate potential keys. But nothing that can be or'ed into -1 will ever change the value, so this is rather pointless, as we're not emitting diagnostics apart from setting a bool to false. Fix by simply returning -1. That makes it obvious what we're returning, and we return early on error. Pick-to: 6.2 Change-Id: I8957f44e03609ad58d6c25d5fa78c57190b14bdd Reviewed-by: MÃ¥rten Nordheim --- src/corelib/kernel/qmetaobject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/kernel/qmetaobject.cpp') diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index ee2bf156fe..6bac42162b 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -2872,7 +2872,7 @@ int QMetaEnum::keysToValue(const char *keys, bool *ok) const if (i < 0) { if (ok != nullptr) *ok = false; - value |= -1; + return -1; } } return value; -- cgit v1.2.3