QDBusListener: remove ChangeSignal's defaut ctor

Coverity complained that the default ctor didn't initialize its two
members. This is true, and it even remains true if the user of the
type explicitly asks for value-initialization (ChangeSignal s = {}) as
opposed to default-construction (ChangeSignal s;).

Remove the default ctor as the minimally-possible fix. It was only
needed because of a call to QFlatMap::value(1-arg), which,
incidentally, constitutes a double-lookup, because it is following a
contains() call. Replacing that combo with find() and it.value()
avoids the double-lookup and removes the need for the type to be
default-constructible.

Amends 0328e4297e339de8a2acd84979c667936f6fadf8.

Coverity picked this up as a new issue following
53fb13456fffe8bfd192f9197c6d1703854b49a2, so there probably is another
CID for this for the same code in the old location, but my Coverity
search-foo is insufficient to find the corresponding CID, without
undue effort, so I didn't try.

Manual conflict resolution for 6.9:
- tracked contents from qdbuslistener* back into qgenericunixthemes.cpp,
  whence 53fb13456fffe8bfd192f9197c6d1703854b49a2 moved them.

Coverity-Id: 478089
Pick-to: 6.5
Change-Id: I912bf2af343b98fe62faf2d4bf8a6d1f385593e8
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit d624454586bc040c381091f45ca43dcb43f7112c)
(cherry picked from commit 3383817a2d5c120c935ef2a50a226acffa4d32b2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2025-03-20 11:36:02 +01:00 committed by Qt Cherry-pick Bot
parent c23790cacb
commit 9e6f749375

View File

@ -178,7 +178,6 @@ private:
Provider provider;
Setting setting;
ChangeSignal(Provider p, Setting s) : provider(p), setting(s) {}
ChangeSignal() {}
};
QFlatMap <DBusKey, ChangeSignal> m_signalMap;
@ -387,8 +386,9 @@ std::optional<QGenericUnixThemeDBusListener::ChangeSignal>
{
const DBusKey dkey(location, key);
std::optional<QGenericUnixThemeDBusListener::ChangeSignal> ret;
if (m_signalMap.contains(dkey))
ret.emplace(m_signalMap.value(dkey));
const auto it = m_signalMap.find(dkey);
if (it != m_signalMap.cend())
ret.emplace(it.value());
return ret;
}