summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorwl <wl>2013-01-07 06:11:55 +0000
committerwl <wl>2013-01-07 06:11:55 +0000
commit252bac7d299094e44f1d0aedffb67034d601ad04 (patch)
tree1e08467c2fe08b4c27f8b95106bc6136b6dab88e /src
parentd76a4f413276ed26cc5950d638e2f1cf2e2bb6ec (diff)
downloadgroff-252bac7d299094e44f1d0aedffb67034d601ad04.tar.gz
[eqn] Handle border cases of `delim on' and `delim off'.
* src/preproc/eqn/lex.cpp (do_delim): Handle multiple sequences of `delim on' gracefully (ditto for `delim off').
Diffstat (limited to 'src')
-rw-r--r--src/preproc/eqn/lex.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/preproc/eqn/lex.cpp b/src/preproc/eqn/lex.cpp
index 899ecaeb..ed8930f5 100644
--- a/src/preproc/eqn/lex.cpp
+++ b/src/preproc/eqn/lex.cpp
@@ -1071,13 +1071,17 @@ void do_delim()
else {
if (c == 'o' && d == 'f' && peek_char() == 'f') {
(void)get_char();
- start_delim_saved = start_delim;
- end_delim_saved = end_delim;
+ if (start_delim)
+ start_delim_saved = start_delim;
+ if (end_delim)
+ end_delim_saved = end_delim;
start_delim = end_delim = '\0';
}
else if (c == 'o' && d == 'n' && !compatible_flag) {
- start_delim = start_delim_saved;
- end_delim = end_delim_saved;
+ if (start_delim_saved)
+ start_delim = start_delim_saved;
+ if (end_delim_saved)
+ end_delim = end_delim_saved;
}
else {
start_delim = c;