diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-12-12 11:26:22 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-12-12 11:26:22 +0100 |
commit | bdfd83e42d0044db7e99cec452427c0b76d46f20 (patch) | |
tree | 81e563dbcd79f877bb1b79ff659504e2ad42a688 /lib-src | |
parent | 6c9adafa93193a5f80d1254e04de478b145add89 (diff) | |
download | emacs-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.c | 9 |
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); |