From cda1ac790610349af49b3f35a15c23b7573b142e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 26 Feb 2010 19:50:05 +0000 Subject: [PATCH] fix text% insert bug svn: r18356 original commit: a2bf0d3d25b075f1435b1831fd9d9568eb0ee315 --- collects/mred/private/wxme/text.ss | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/collects/mred/private/wxme/text.ss b/collects/mred/private/wxme/text.ss index 3c07bc7a..c2344d53 100644 --- a/collects/mred/private/wxme/text.ss +++ b/collects/mred/private/wxme/text.ss @@ -1684,6 +1684,13 @@ [else (loop start str (+ sp 1) (+ i 1) (+ cnt 1) inserted-line?)]))))))))))) + (define/private (check-len str len) + (unless (len . <= . (string-length str)) + (raise-mismatch-error (method-name 'text% 'insert) + (format "length ~e too large for given string: " + len) + str))) + (define/override (insert . args) (case-args args @@ -1696,12 +1703,14 @@ (do-insert #f str #f start end scroll-ok?)] [([exact-nonnegative-integer? len] [string? str]) - (do-insert #f str #f startpos endpos #t)] + (check-len str len) + (do-insert #f (substring str 0 len) #f startpos endpos #t)] [([exact-nonnegative-integer? len] [string? str] [exact-nonnegative-integer? start] [(make-alts exact-nonnegative-integer? (symbol-in same)) [end 'same]] [any? [scroll-ok? #t]]) + (check-len str len) (do-insert #f (substring str 0 len) #f start end scroll-ok?)] [([snip% snip]) (do-insert snip #f #f startpos endpos #t)]