summaryrefslogtreecommitdiff
path: root/lib-src
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-12-12 11:26:22 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-12-12 11:26:22 +0100
commitbdfd83e42d0044db7e99cec452427c0b76d46f20 (patch)
tree81e563dbcd79f877bb1b79ff659504e2ad42a688 /lib-src
parent6c9adafa93193a5f80d1254e04de478b145add89 (diff)
downloademacs-bdfd83e42d0044db7e99cec452427c0b76d46f20.tar.gz
Fix an off-by-one error in TEX parsing in etags
* lib-src/etags.c (TEX_decode_env): Fix off-by-one parsing of TEXTAGS environment variable (bug#52438). Based on a patch by David Fussner <dfussner@googlemail.com> and amended by Andreas Schwab <schwab@linux-m68k.org>.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/etags.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib-src/etags.c b/lib-src/etags.c
index bd4d4fcf53a..af142b0b3d1 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -5773,7 +5773,7 @@ static void
TEX_decode_env (const char *evarname, const char *defenv)
{
const char *env, *p;
- ptrdiff_t len;
+ ptrdiff_t len = 1;
/* Append default string to environment. */
env = getenv (evarname);
@@ -5782,8 +5782,13 @@ TEX_decode_env (const char *evarname, const char *defenv)
else
env = concat (env, defenv, "");
+ /* If the environment variable starts with a colon, increase the
+ length of the token table. */
+ if (*env == ':')
+ len++;
+
/* Allocate a token table */
- for (len = 1, p = env; (p = strchr (p, ':')); )
+ for (p = env; (p = strchr (p, ':')); )
if (*++p)
len++;
TEX_toktab = xnew (len, linebuffer);