X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsupertux%2Fconsole.cpp;h=1d27bc87b201c16cf04f58dc59fca4b8ffcd7f55;hb=219ec61655edf6785ef483905b162604a215f5f4;hp=6b866b25df2d6fb32965c82b30d1dd791addefac;hpb=d041b64d9d853852bf66b5a194c5beaf7e6fe611;p=supertux.git diff --git a/src/supertux/console.cpp b/src/supertux/console.cpp index 6b866b25d..1d27bc87b 100644 --- a/src/supertux/console.cpp +++ b/src/supertux/console.cpp @@ -20,6 +20,7 @@ #include #include "physfs/ifile_stream.hpp" +#include "scripting/scripting.hpp" #include "scripting/squirrel_util.hpp" #include "supertux/gameconfig.hpp" #include "supertux/globals.hpp" @@ -122,6 +123,16 @@ Console::~Console() void Console::on_buffer_change(int line_count) { + if (!m_font) + { + // FIXME: This is an ugly workaround for a crash at startup. + // Console::current() becomes valid before the Console constructor + // is finished and loading Surfaces and Fonts wants to write text + // to the Console, with Fonts that aren't yet loaded, thus + // crashing + return; + } + // increase console height if necessary if (m_stayOpen > 0 && m_height < 64) { @@ -246,11 +257,11 @@ void Console::show_history(int offset_) { while ((offset_ > 0) && (m_history_position != m_history.end())) { - m_history_position++; + ++m_history_position; offset_--; } while ((offset_ < 0) && (m_history_position != m_history.begin())) { - m_history_position--; + --m_history_position; offset_++; } if (m_history_position == m_history.end()) { @@ -413,10 +424,9 @@ Console::parse(std::string s) // split line into list of args std::vector args; - size_t start = 0; size_t end = 0; while (1) { - start = s.find_first_not_of(" ,", end); + size_t start = s.find_first_not_of(" ,", end); end = s.find_first_of(" ,", start); if (start == s.npos) break; args.push_back(s.substr(start, end-start)); @@ -550,7 +560,7 @@ Console::draw(DrawingContext& context) } int skipLines = -m_offset; - for (std::list::iterator i = m_buffer.m_lines.begin(); i != m_buffer.m_lines.end(); i++) + for (std::list::iterator i = m_buffer.m_lines.begin(); i != m_buffer.m_lines.end(); ++i) { if (skipLines-- > 0) continue; lineNo++;