[haiku-commits] r39684 - haiku/trunk/src/apps/terminal

  • From: pulkomandy@xxxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 30 Nov 2010 21:09:43 +0100 (CET)

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);


Other related posts:

  • » [haiku-commits] r39684 - haiku/trunk/src/apps/terminal - pulkomandy