Skip to content

Commit 27631b1

Browse files
data-manAraq
authored andcommitted
Fix filter_tmpl errors (#7763)
1 parent 8f7bd6c commit 27631b1

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

compiler/filter_tmpl.nim

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ proc scanPar(p: var TTmplParser, d: int) =
4545
let hi = p.x.len - 1
4646
while i <= hi:
4747
case p.x[i]
48-
of '\0': break
4948
of '(': inc(p.par)
5049
of ')': dec(p.par)
5150
of '[': inc(p.bracket)
@@ -64,16 +63,22 @@ const
6463

6564
proc parseLine(p: var TTmplParser) =
6665
var j = 0
67-
while p.x[j] == ' ': inc(j)
66+
let hi = p.x.len - 1
67+
68+
if hi == 0:
69+
return
70+
71+
while j <= hi and p.x[j] == ' ': inc(j)
72+
6873
if p.x[0] == p.nimDirective and p.x[1] == '?':
6974
newLine(p)
7075
elif p.x[j] == p.nimDirective:
7176
newLine(p)
7277
inc(j)
73-
while p.x[j] == ' ': inc(j)
78+
while j <= hi and p.x[j] == ' ': inc(j)
7479
let d = j
7580
var keyw = ""
76-
while p.x[j] in PatternChars:
81+
while j <= hi and p.x[j] in PatternChars:
7782
add(keyw, p.x[j])
7883
inc(j)
7984

@@ -127,10 +132,8 @@ proc parseLine(p: var TTmplParser) =
127132
llStreamWrite(p.outp, "(\"")
128133
inc(p.emitPar)
129134
p.state = psTempl
130-
while true:
135+
while j <= hi:
131136
case p.x[j]
132-
of '\0':
133-
break
134137
of '\x01'..'\x1F', '\x80'..'\xFF':
135138
llStreamWrite(p.outp, "\\x")
136139
llStreamWrite(p.outp, toHex(ord(p.x[j]), 2))
@@ -157,11 +160,8 @@ proc parseLine(p: var TTmplParser) =
157160
llStreamWrite(p.outp, '(')
158161
inc(j)
159162
var curly = 0
160-
while true:
163+
while j <= hi:
161164
case p.x[j]
162-
of '\0':
163-
localError(p.info, errXExpected, "}")
164-
break
165165
of '{':
166166
inc(j)
167167
inc(curly)
@@ -174,6 +174,9 @@ proc parseLine(p: var TTmplParser) =
174174
else:
175175
llStreamWrite(p.outp, p.x[j])
176176
inc(j)
177+
if curly > 0:
178+
localError(p.info, errXExpected, "}")
179+
break
177180
llStreamWrite(p.outp, ')')
178181
llStreamWrite(p.outp, p.conc)
179182
llStreamWrite(p.outp, '\"')
@@ -182,7 +185,7 @@ proc parseLine(p: var TTmplParser) =
182185
llStreamWrite(p.outp, p.conc)
183186
llStreamWrite(p.outp, p.toStr)
184187
llStreamWrite(p.outp, '(')
185-
while p.x[j] in PatternChars:
188+
while j <= hi and p.x[j] in PatternChars:
186189
llStreamWrite(p.outp, p.x[j])
187190
inc(j)
188191
llStreamWrite(p.outp, ')')

0 commit comments

Comments
 (0)