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)
{
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()) {
// split line into list of args
std::vector<std::string> 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));
}
int skipLines = -m_offset;
- for (std::list<std::string>::iterator i = m_buffer.m_lines.begin(); i != m_buffer.m_lines.end(); i++)
+ for (std::list<std::string>::iterator i = m_buffer.m_lines.begin(); i != m_buffer.m_lines.end(); ++i)
{
if (skipLines-- > 0) continue;
lineNo++;