GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1509301 into lp:widelands.
Requested reviews: Widelands Developers (widelands-dev) Related bugs: Bug #1509301 in widelands: "Loading older multiplayer savegame doesn't work" https://bugs.launchpad.net/widelands/+bug/1509301 For more details, see: https://code.launchpad.net/~widelands-dev/widelands/bug-1509301/+merge/275624 Fixed the crash. What happens here is that the old savegame causes an exception to be thrown. Because of the exception, the ChatOverlay never got assigned a specific ChatProvider, only the generic one. The generic one contains only virtual methods. So, I added a check for this. -- Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1509301 into lp:widelands.
=== modified file 'src/wui/chatoverlay.cc' --- src/wui/chatoverlay.cc 2015-10-04 19:53:09 +0000 +++ src/wui/chatoverlay.cc 2015-10-24 12:20:35 +0000 @@ -21,6 +21,7 @@ #include <memory> +#include "base/macros.h" #include "chat/chat.h" #include "graphic/font_handler1.h" #include "graphic/rendertarget.h" @@ -67,6 +68,15 @@ } void recompute(); + +private: + bool has_chat_provider() { + if (chat_ == nullptr) return false; + // The chat provider might not have been assigned a specific subclass, + // e.g. if there was an exception thrown. + if (is_a(ChatProvider, chat_)) return false; + return true; + } }; ChatOverlay::ChatOverlay @@ -116,7 +126,7 @@ // Parse the chat message list as well as the log message list // and display them in chronological order - int32_t chat_idx = chat_ != nullptr ? chat_->get_messages().size() - 1 : -1; + int32_t chat_idx = has_chat_provider() ? chat_->get_messages().size() - 1 : -1; int32_t log_idx = log_messages_.empty() ? -1 : log_messages_.size() - 1; std::string richtext;
_______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp