From 0bb9e1df300fc01516e8e9e21c83b39e8b79b1d0 Mon Sep 17 00:00:00 2001 From: slava Date: Tue, 21 Feb 2006 23:33:16 +0000 Subject: [PATCH] Fix infinite loop with unterminated ( --- library/syntax/parse-syntax.factor | 11 ++++++++--- library/syntax/parser.factor | 6 ------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/library/syntax/parse-syntax.factor b/library/syntax/parse-syntax.factor index e27e0dd86b..8987f3a3d6 100644 --- a/library/syntax/parse-syntax.factor +++ b/library/syntax/parse-syntax.factor @@ -7,9 +7,14 @@ USING: alien arrays errors generic hashtables kernel lists math namespaces parser sequences strings syntax vectors words ; -: ( CHAR: ) ch-search until ; parsing -: ! until-eol ; parsing -: #! until-eol ; parsing +: ( + CHAR: ) column [ + line-text get index* dup -1 = + [ "Unterminated (" throw ] when 1+ + ] change ; parsing + +: ! line-text get length column set ; parsing +: #! POSTPONE: ! ; parsing : IN: scan set-in ; parsing : USE: scan use+ ; parsing : USING: string-mode on [ string-mode off add-use ] f ; parsing diff --git a/library/syntax/parser.factor b/library/syntax/parser.factor index 15292062bc..c98cd79172 100644 --- a/library/syntax/parser.factor +++ b/library/syntax/parser.factor @@ -84,12 +84,6 @@ SYMBOL: string-mode : (parse) ( str -- ) line-text set 0 column set parse-loop ; ! Parsing word utilities -: ch-search ( ch -- index ) column get line-text get index* ; - -: until ( index -- ) 1+ column set ; - -: until-eol ( -- ) line-text get length until ; - : escape ( ch -- esc ) H{ { CHAR: e CHAR: \e }