]> git.cameronkatri.com Git - mandoc.git/blobdiff - roff.c
Avoid the layering violation of re-parsing for \E in roff_expand().
[mandoc.git] / roff.c
diff --git a/roff.c b/roff.c
index 83701f7d936979e3b768d4cc0aea3cce18eaa6c8..c4b944e3b763d7c0f664e8b74b2448e073f253c9 100644 (file)
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/* $Id: roff.c,v 1.391 2022/05/31 20:23:05 schwarze Exp $ */
+/* $Id: roff.c,v 1.392 2022/06/02 11:29:07 schwarze Exp $ */
 /*
  * Copyright (c) 2010-2015, 2017-2022 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -1410,8 +1410,8 @@ roff_expand(struct roff *r, struct buf *buf, int ln, int pos, char ec)
                 * it to backslashes and translate backslashes to \e.
                 */
 
-               if (roff_escape(buf->buf, ln, pos,
-                   &iesc, &iarg, &iendarg, &iend) != ESCAPE_EXPAND) {
+               if (roff_escape(buf->buf, ln, pos, &iesc, &inam,
+                   &iarg, &iendarg, &iend) != ESCAPE_EXPAND) {
                        while (pos < iend) {
                                if (buf->buf[pos] == ec) {
                                        buf->buf[pos] = '\\';
@@ -1428,15 +1428,6 @@ roff_expand(struct roff *r, struct buf *buf, int ln, int pos, char ec)
                        continue;
                }
 
-               /*
-                * Treat "\E" just like "\";
-                * it only makes a difference in copy mode.
-                */
-
-               inam = iesc + 1;
-               while (buf->buf[inam] == 'E')
-                       inam++;
-
                /* Handle expansion. */
 
                res = NULL;