From 0e763f5b01a18f04f23e07f74d5b04d42a67fc17 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 1 Jan 2013 15:00:16 -0600 Subject: [PATCH] check the result of find-ls in the one place it wasn't being checked probably closes 13404 --- collects/framework/private/color.rkt | 34 ++++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/collects/framework/private/color.rkt b/collects/framework/private/color.rkt index 5452b535a8..5dcb0aac4f 100644 --- a/collects/framework/private/color.rkt +++ b/collects/framework/private/color.rkt @@ -1000,22 +1000,26 @@ added get-regions (define/private (find-next-close-paren pos closers [adj? #t]) (define next-pos (skip-whitespace pos 'forward #t)) (define ls (find-ls next-pos)) - (define ls-start (lexer-state-start-pos ls)) - (define tree (lexer-state-tokens ls)) - (send tree search! (- next-pos ls-start)) - (define start-pos (+ ls-start (send tree get-root-start-position))) - (define end-pos (+ ls-start (send tree get-root-end-position))) - - #;(printf "~a |~a| |~a|~n" (list pos next-pos start-pos end-pos (send tree get-root-data)) closers (get-text start-pos end-pos)) - (cond - [(or (not (send tree get-root-data)) (<= end-pos pos)) - (values #f #f #f #f)] ;; didn't find /any/ token ending after pos - [(and (<= pos start-pos) - (member (get-text start-pos end-pos) closers)) ; token at start-pos matches - (values start-pos end-pos (get-text start-pos end-pos) adj?)] - [else ; skip ahead - (find-next-close-paren end-pos closers #f)])) + [ls + (define ls-start (lexer-state-start-pos ls)) + (define tree (lexer-state-tokens ls)) + (send tree search! (- next-pos ls-start)) + (define start-pos (+ ls-start (send tree get-root-start-position))) + (define end-pos (+ ls-start (send tree get-root-end-position))) + + #;(printf "~a |~a| |~a|~n" (list pos next-pos start-pos end-pos (send tree get-root-data)) closers (get-text start-pos end-pos)) + + (cond + [(or (not (send tree get-root-data)) (<= end-pos pos)) + (values #f #f #f #f)] ;; didn't find /any/ token ending after pos + [(and (<= pos start-pos) + (member (get-text start-pos end-pos) closers)) ; token at start-pos matches + (values start-pos end-pos (get-text start-pos end-pos) adj?)] + [else ; skip ahead + (find-next-close-paren end-pos closers #f)])] + [else + (values #f #f #f #f)])) ;; given end-pos, a position right after a closing parens,