]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix an off-by-one error in TEX parsing in etags
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 12 Dec 2021 10:26:22 +0000 (11:26 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 12 Dec 2021 10:26:22 +0000 (11:26 +0100)
* 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>.

lib-src/etags.c

index bd4d4fcf53a53ebad93d5848c08f858d6b11e3a9..af142b0b3d1f50e75f14b162bd16eb070a9ce14d 100644 (file)
@@ -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);