1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

fix(groups): Fix invalid group list on group member join

The call to Core::getGroupPeerNames is expected to return a list where
the index in the list is the group member id. In any error case we were
previously breaking this constraint. It turns out that every time
someone joins a group we call this function before they have a valid
name resulting in their id not being added to the list.

This fix ensures that the list coming out of Core::getGroupPeerNames
always has a full list.

Fixes #5838
This commit is contained in:
Mick Sayson 2019-11-09 14:08:15 -08:00
parent 575ee61855
commit fd243738c1

View File

@ -1502,7 +1502,9 @@ QStringList Core::getGroupPeerNames(int groupId) const
for (uint32_t i = 0; i < nPeers; ++i) { for (uint32_t i = 0; i < nPeers; ++i) {
Tox_Err_Conference_Peer_Query error; Tox_Err_Conference_Peer_Query error;
size_t length = tox_conference_peer_get_name_size(tox.get(), groupId, i, &error); size_t length = tox_conference_peer_get_name_size(tox.get(), groupId, i, &error);
if (!PARSE_ERR(error) || !length) { if (!PARSE_ERR(error) || !length) {
names.append(QString());
continue; continue;
} }
@ -1510,9 +1512,13 @@ QStringList Core::getGroupPeerNames(int groupId) const
tox_conference_peer_get_name(tox.get(), groupId, i, nameBuf.data(), &error); tox_conference_peer_get_name(tox.get(), groupId, i, nameBuf.data(), &error);
if (PARSE_ERR(error)) { if (PARSE_ERR(error)) {
names.append(ToxString(nameBuf.data(), length).getQString()); names.append(ToxString(nameBuf.data(), length).getQString());
} else {
names.append(QString());
} }
} }
assert(names.size() == nPeers);
return names; return names;
} }