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 0328e4297e.

Coverity picked this up as a new issue following
53fb13456f, 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.

Coverity-Id: 478089
Pick-to: 6.9 6.8 6.5
Change-Id: I912bf2af343b98fe62faf2d4bf8a6d1f385593e8
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
This commit is contained in:
Marc Mutz 2025-03-20 11:36:02 +01:00
parent 536cd1ce20
commit d624454586
2 changed files with 3 additions and 3 deletions

View File

@ -219,8 +219,9 @@ std::optional<QDBusListener::ChangeSignal>
{
const DBusKey dkey(location, key);
std::optional<QDBusListener::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;
}

View File

@ -70,7 +70,6 @@ private:
Provider provider;
Setting setting;
ChangeSignal(Provider p, Setting s) : provider(p), setting(s) {}
ChangeSignal() {}
};
QFlatMap <DBusKey, ChangeSignal> m_signalMap;