diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp index f9d96ee..3682636 100644 --- a/components/chatmessage.cpp +++ b/components/chatmessage.cpp @@ -714,8 +714,6 @@ void ChatMessageItemContainer::HandleEmojis(Gtk::TextView &tv) { void ChatMessageItemContainer::CleanupEmojis(Glib::RefPtr buf) { static auto rgx = Glib::Regex::create(R"()"); - auto &img = Abaddon::Get().GetImageManager(); - auto text = GetText(buf); Glib::MatchInfo match; @@ -724,6 +722,8 @@ void ChatMessageItemContainer::CleanupEmojis(Glib::RefPtr buf) int mstart, mend; if (!match.fetch_pos(0, mstart, mend)) break; + const auto new_term = ":" + match.fetch(1) + ":"; + const auto chars_start = g_utf8_pointer_to_offset(text.c_str(), text.c_str() + mstart); const auto chars_end = g_utf8_pointer_to_offset(text.c_str(), text.c_str() + mend); auto start_it = buf->get_iter_at_offset(chars_start); @@ -736,7 +736,7 @@ void ChatMessageItemContainer::CleanupEmojis(Glib::RefPtr buf) const int blen = text.size(); startpos -= (alen - blen); - buf->insert(it, ":" + match.fetch(1) + ":"); + buf->insert(it, new_term); text = GetText(buf); } diff --git a/discord/objects.hpp b/discord/objects.hpp index 5efd94c..713e4bd 100644 --- a/discord/objects.hpp +++ b/discord/objects.hpp @@ -121,6 +121,8 @@ struct MessageDeleteBulkData { struct GuildMemberListUpdateMessage { struct Item { + virtual ~Item() = default; + std::string Type; }; diff --git a/filecache.cpp b/filecache.cpp index 05da20e..eb31360 100644 --- a/filecache.cpp +++ b/filecache.cpp @@ -182,6 +182,9 @@ void FileCacheWorkerThread::loop() { auto fp = m_curl_file_handles.find(msg->easy_handle); std::fclose(fp->second); + m_handles.erase(msg->easy_handle); + m_handle_urls.erase(msg->easy_handle); + curl_multi_remove_handle(m_multi_handle, msg->easy_handle); curl_easy_cleanup(msg->easy_handle); @@ -189,8 +192,6 @@ void FileCacheWorkerThread::loop() { auto cb = m_callbacks.at(url); m_callbacks.erase(url); m_paths.erase(url); - m_handles.erase(msg->easy_handle); - m_handle_urls.erase(msg->easy_handle); m_curl_file_handles.erase(fp); // chop off the ! auto old = path;