mirror of
https://github.com/zyedidia/micro.git
synced 2026-02-06 07:00:24 +09:00
ReHighlightStates: sanity-check startline value (#3237)
Check if startline value is valid before passing it to input.State(), to prevent a theoretically possible race when the number of lines changes in the meantime, causing an out of bounds access. Actually this race cannot happen: ReHighlightStates() is only called from the main goroutine, and the line array is modified, again, only by the main goroutine. So for now this change is rather cosmetic: it is just to make the highligher API implementation self-sufficiently safe without assumptions about which goroutines are using which API functions and how.
This commit is contained in:
@@ -363,7 +363,9 @@ func (h *Highlighter) ReHighlightStates(input LineStates, startline int) int {
|
||||
h.lastRegion = nil
|
||||
if startline > 0 {
|
||||
input.Lock()
|
||||
h.lastRegion = input.State(startline - 1)
|
||||
if startline-1 < input.LinesNum() {
|
||||
h.lastRegion = input.State(startline - 1)
|
||||
}
|
||||
input.Unlock()
|
||||
}
|
||||
for i := startline; ; i++ {
|
||||
|
||||
Reference in New Issue
Block a user