summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-02-11 06:39:06 -0600
committermujx <mujx@users.noreply.github.com>2018-02-11 14:39:06 +0200
commit0be787f1e414d4a3be148422a963c81ef1d1c6d7 (patch)
treecccda2e70e30e174e499def6c0bca5801dd1aac0 /src
parentRemove empty destructors (diff)
downloadnheko-0be787f1e414d4a3be148422a963c81ef1d1c6d7.tar.xz
RoomList: do not blindly dereference RoomState (#232)
This can happen when a new room is being created from a different client and thus is created
with no known state to the local client.
Diffstat (limited to 'src')
-rw-r--r--src/RoomList.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/RoomList.cc b/src/RoomList.cc

index 1f8747ae..d4b12690 100644 --- a/src/RoomList.cc +++ b/src/RoomList.cc
@@ -198,13 +198,16 @@ RoomList::sync(const std::map<QString, QSharedPointer<RoomState>> &states, if (!roomExists(state.first)) addRoom(settings.at(state.first), state.second, state.first); - auto room = rooms_[state.first]; + auto room = rooms_[state.first]; + auto room_state = room->state(); - auto current_avatar = room->state()->getAvatar(); - auto new_avatar = state.second->getAvatar(); + if (room_state) { + auto current_avatar = room_state->getAvatar(); + auto new_avatar = state.second->getAvatar(); - if (current_avatar != new_avatar && !new_avatar.toString().isEmpty()) - updateAvatar(state.first, new_avatar.toString()); + if (current_avatar != new_avatar && !new_avatar.toString().isEmpty()) + updateAvatar(state.first, new_avatar.toString()); + } room->setState(state.second); }