Skip to content

Commit 57d00ae

Browse files
committed
parseinput: allow for double caret at end, and error if truncated
before erroring for truncated FNC
1 parent cc3ee7d commit 57d00ae

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/parseinput.ps.src

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,16 +138,20 @@ begin
138138

139139
% parsefnc
140140
/j j 1 sub def
141-
dup length 3 lt {
141+
dup length 1 lt {
142142
pop
143-
/bwipp.truncatedFNC (Function character truncated) //raiseerror exec
143+
/bwipp.truncatedCaret (Caret character truncated) //raiseerror exec
144144
} if
145145
dup 0 get 94 eq { % "^^" -> "^"
146146
msg j 94 put
147147
/j j 1 add def
148148
dup length 1 sub 1 exch getinterval
149149
exit
150150
} if
151+
dup length 3 lt {
152+
pop
153+
/bwipp.truncatedFNC (Function character truncated) //raiseerror exec
154+
} if
151155
dup 0 3 getinterval (ECI) eq eci and { % "^ECInnnnnn" -> -1nnnnnn
152156
dup length 9 lt {
153157
pop

tests/ps_tests/parseinput.ps.test

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,22 @@
158158
(AB^^FNC1C) << /parse false /parsefnc true (FNC1) -1 >> parseinput
159159
} [ 65 66 94 70 78 67 49 67 ] isEqual
160160

161-
{ % Truncated
161+
{ % Escaped "^^" -> "^" at end
162+
(AB^^) << /parse false /parsefnc true (FNC1) -1 >> parseinput
163+
} [ 65 66 94 ] isEqual
164+
165+
{ % Truncated FNC
162166
(ABC^FNC) << /parse false /parsefnc true (FNC1) -1 >> parseinput
163167
} /bwipp.truncatedFNC isError
164168

169+
{ % Truncated FNC
170+
(ABC^F) << /parse false /parsefnc true (FNC1) -1 >> parseinput
171+
} /bwipp.truncatedFNC isError
172+
173+
{ % Truncated caret
174+
(ABC^) << /parse false /parsefnc true (FNC1) -1 >> parseinput
175+
} /bwipp.truncatedCaret isError
176+
165177
{ % No such FNC
166178
(A^FNC2BC) << /parse false /parsefnc true (FNC1) -1 >> parseinput
167179
} /bwipp.unknownFNC isError

0 commit comments

Comments
 (0)