aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 315fef0..d0eadb4 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -3199,7 +3199,7 @@ namespace QuickMedia {
auto find_body_item_by_event_id = [](std::shared_ptr<BodyItem> *body_items, size_t num_body_items, const std::string &event_id, size_t *index_result = nullptr) -> std::shared_ptr<BodyItem> {
for(size_t i = 0; i < num_body_items; ++i) {
auto &body_item = body_items[i];
- if(static_cast<Message*>(body_item->userdata)->event_id == event_id) {
+ if(body_item->userdata && static_cast<Message*>(body_item->userdata)->event_id == event_id) {
if(index_result)
*index_result = i;
return body_item;
@@ -3610,6 +3610,8 @@ namespace QuickMedia {
return;
Message *message = static_cast<Message*>(body_item->userdata);
+ if(!message)
+ return;
assert(message);
#if 0
@@ -3848,7 +3850,7 @@ namespace QuickMedia {
for(auto &message_body_items : tabs[MESSAGES_TAB_INDEX].body->items) {
Message *message = static_cast<Message*>(message_body_items->userdata);
- if(message->user != user)
+ if(!message || message->user != user)
continue;
message_body_items->set_author(user_display_name);
@@ -3885,6 +3887,9 @@ namespace QuickMedia {
fprintf(stderr, "updated messages author for all users in room: %s\n", current_room->id.c_str());
for(auto &message_body_items : tabs[MESSAGES_TAB_INDEX].body->items) {
Message *message = static_cast<Message*>(message_body_items->userdata);
+ if(!message)
+ continue;
+
message_body_items->set_author(current_room->get_user_display_name(message->user));
if(!is_visual_media_message_type(message->type)) {
message_body_items->thumbnail_url = current_room->get_user_avatar_url(message->user);
@@ -4326,6 +4331,7 @@ namespace QuickMedia {
} else if(provisional_message->body_item) {
provisional_message->body_item->set_description("Failed to send: " + provisional_message->body_item->get_description());
provisional_message->body_item->set_description_color(sf::Color::Red);
+ provisional_message->body_item->userdata = nullptr;
}
}
@@ -4543,9 +4549,10 @@ namespace QuickMedia {
// TODO: What if the message is no longer valid?
setting_read_marker = true;
RoomData *room = current_room;
- set_read_marker_future = [this, room, message]() mutable {
- if(matrix->set_read_marker(room, message) != PluginResult::OK) {
- fprintf(stderr, "Warning: failed to set read marker to %s\n", message->event_id.c_str());
+ std::string event_id = message->event_id;
+ set_read_marker_future = [this, room, event_id]() mutable {
+ if(matrix->set_read_marker(room, event_id) != PluginResult::OK) {
+ fprintf(stderr, "Warning: failed to set read marker to %s\n", event_id.c_str());
}
};
}