From 5ce76fcabf1db1051f544165752d23fe501b02c0 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Mon, 4 Mar 2002 10:40:57 +0000 Subject: Fixed bug when switching buffers led to stale line layout cache entries by deallocating the cache when switching buffers. When number of lines decreases, line layout cache entries for extra lines are deleted. --- src/Editor.cxx | 9 ++++++++- src/Editor.h | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Editor.cxx b/src/Editor.cxx index 64e643b67..fd8a2d719 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -179,7 +179,13 @@ void LineLayoutCache::AllocateForLevel(int linesOnScreen, int linesInDoc) { } if (lengthForLevel > size) { Deallocate(); - } else if (lengthForLevel != length) { + } else { + if (lengthForLevel < length) { + for (int i=lengthForLevel; iLinesTotal() - 1); + llc.Deallocate(); NeedWrapping(); pdoc->AddWatcher(this, 0); diff --git a/src/Editor.h b/src/Editor.h index 35aea3fc3..d9719dc53 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -93,10 +93,10 @@ class LineLayoutCache { int styleClock; void Allocate(int length_); void AllocateForLevel(int linesOnScreen, int linesInDoc); - void Deallocate(); public: LineLayoutCache(); virtual ~LineLayoutCache(); + void Deallocate(); enum { llcNone=SC_CACHE_NONE, llcCaret=SC_CACHE_CARET, -- cgit v1.2.3