diff options
| author | nyamatongwe <devnull@localhost> | 2003-09-24 21:57:20 +0000 | 
|---|---|---|
| committer | nyamatongwe <devnull@localhost> | 2003-09-24 21:57:20 +0000 | 
| commit | d27146d6d80ed619f2d0c6eb883ec7c7b51479c7 (patch) | |
| tree | 2ddfcdde683a14368ab6995d60387939bc334d95 /src/Editor.cxx | |
| parent | 9ddeed309e250837d9c2c65edb6406503ac9c5a8 (diff) | |
| download | scintilla-mirror-d27146d6d80ed619f2d0c6eb883ec7c7b51479c7.tar.gz | |
Fixed read past end of allocation in drawing indicators.
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index 95ac7a8b6..c764344b7 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -2300,14 +2300,16 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis  		indStart[indica] = 0;  	for (int indicPos = lineStart; indicPos <= lineEnd; indicPos++) { -		if ((ll->indicators[indicPos] != ll->indicators[indicPos + 1]) || (indicPos == lineEnd)) { +		if ((indicPos == lineEnd) || (ll->indicators[indicPos] != ll->indicators[indicPos + 1])) {  			int mask = 1 << pdoc->stylingBits;  			for (int indicnum = 0; mask < 0x100; indicnum++) { -				if ((ll->indicators[indicPos + 1] & mask) && !(ll->indicators[indicPos] & mask)) { +				if ((indicPos == lineEnd)) { +					indStart[indicnum] = ll->positions[indicPos]; +				} else if ((ll->indicators[indicPos + 1] & mask) && !(ll->indicators[indicPos] & mask)) {  					indStart[indicnum] = ll->positions[indicPos + 1];  				} -				if ((ll->indicators[indicPos] & mask) && ( -					!(ll->indicators[indicPos + 1] & mask) || (indicPos == lineEnd))) { +				if ((ll->indicators[indicPos] & mask) &&  +					((indicPos == lineEnd) || !(ll->indicators[indicPos + 1] & mask))) {  					int endIndicator = indicPos;  					if (endIndicator >= lineEnd)  						endIndicator = lineEnd-1; | 
