Author: pulkomandy Date: 2010-11-30 21:09:43 +0100 (Tue, 30 Nov 2010) New Revision: 39684 Changeset: http://dev.haiku-os.org/changeset/39684 Modified: haiku/trunk/src/apps/terminal/BasicTerminalBuffer.cpp haiku/trunk/src/apps/terminal/TermView.cpp Log: Fix crash in terminal : GetLinecolor was accessing lines with negative offsets. Modified: haiku/trunk/src/apps/terminal/BasicTerminalBuffer.cpp =================================================================== --- haiku/trunk/src/apps/terminal/BasicTerminalBuffer.cpp 2010-11-30 18:45:53 UTC (rev 39683) +++ haiku/trunk/src/apps/terminal/BasicTerminalBuffer.cpp 2010-11-30 20:09:43 UTC (rev 39684) @@ -448,7 +448,8 @@ int32 BasicTerminalBuffer::GetLineColor(int32 index) const { - TerminalLine* line = _LineAt(index); + TerminalLine* lineBuffer = ALLOC_LINE_ON_STACK(fWidth); + TerminalLine* line = _HistoryLineAt(index, lineBuffer); return line != NULL ? line->attributes : 0; } Modified: haiku/trunk/src/apps/terminal/TermView.cpp =================================================================== --- haiku/trunk/src/apps/terminal/TermView.cpp 2010-11-30 18:45:53 UTC (rev 39683) +++ haiku/trunk/src/apps/terminal/TermView.cpp 2010-11-30 20:09:43 UTC (rev 39684) @@ -1428,7 +1428,9 @@ SetHighColor(fSelectBackColor); FillRect(rect); } else { - uint32 backcolor = IS_BACKCOLOR(fVisibleTextBuffer->GetLineColor(j)); + int lineIndexInHistory = j + fTextBuffer->HistorySize(); + uint32 backcolor = IS_BACKCOLOR(fVisibleTextBuffer->GetLineColor( + lineIndexInHistory)); rgb_color rgb_back = kTermColorTable[backcolor]; SetHighColor(rgb_back); FillRect(rect);