diff options
author | nyamatongwe <unknown> | 2003-09-24 21:57:20 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2003-09-24 21:57:20 +0000 |
commit | 0ef6e33737347f630fd357c5c3849717b4bf6253 (patch) | |
tree | 2ddfcdde683a14368ab6995d60387939bc334d95 /src | |
parent | 2be12c32ac4c3bcb6ac8c64a894d5d0c6262c78c (diff) | |
download | scintilla-mirror-0ef6e33737347f630fd357c5c3849717b4bf6253.tar.gz |
Fixed read past end of allocation in drawing indicators.
Diffstat (limited to 'src')
-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; |