summaryrefslogtreecommitdiff
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
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').
-rw-r--r--ChangeLog7
-rw-r--r--src/preproc/eqn/lex.cpp12
2 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index e6398675..ab4da9e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-07 Werner LEMBERG <wl@gnu.org>
+
+ [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').
+
2013-01-06 Werner LEMBERG <wl@gnu.org>
[eqn] Add `delim on'.
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;