summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2026-05-23 07:40:07 +0200
committerMikael Magnusson <mikachu@gmail.com>2026-05-25 07:10:42 +0200
commit24a98c9f5114c3d8d959344765e10a7835afb447 (patch)
tree1d1a7705ff7a2b49961acc5e06c5d7c760e7aa32
parent54599: use correct buf size in cancd (diff)
downloadzsh-24a98c9f5114c3d8d959344765e10a7835afb447.tar
zsh-24a98c9f5114c3d8d959344765e10a7835afb447.tar.gz
zsh-24a98c9f5114c3d8d959344765e10a7835afb447.tar.bz2
zsh-24a98c9f5114c3d8d959344765e10a7835afb447.tar.lz
zsh-24a98c9f5114c3d8d959344765e10a7835afb447.tar.xz
zsh-24a98c9f5114c3d8d959344765e10a7835afb447.tar.zst
zsh-24a98c9f5114c3d8d959344765e10a7835afb447.zip
54600: fix metafy stuff in add_autoload_function
-rw-r--r--ChangeLog2
-rw-r--r--Src/builtin.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 10c468d7b..05bdedae6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2026-05-25 Mikael Magnusson <mikachu@gmail.com>
+ * 54600: Src/builtin.c: fix metafy stuff in add_autoload_function
+
* 54599: Src/exec.c: use correct buf size in cancd
* 54598: Src/exec.c: fix getfpfunc metafication
diff --git a/Src/builtin.c b/Src/builtin.c
index cf27c5d63..7a611f3ad 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -3298,7 +3298,7 @@ add_autoload_function(Shfunc shf, char *funcname)
Shfunc shf2;
Funcstack fs;
const char *calling_f = NULL;
- char buf[PATH_MAX+1];
+ char buf[PATH_MAX*4];
/* Find calling function */
for (fs = funcstack; fs; fs = fs->prev) {
@@ -3315,10 +3315,11 @@ add_autoload_function(Shfunc shf, char *funcname)
&& (shf2->node.flags & PM_LOADDIR) && (shf2->node.flags & PM_ABSPATH_USED)
&& shf2->filename)
{
- if (snprintf(buf, PATH_MAX, "%s/%s", shf2->filename, funcname) < PATH_MAX)
+ if (snprintf(buf, sizeof(buf), "%s/%s", shf2->filename, funcname) < sizeof(buf))
{
/* Set containing directory if the function file
* exists (do normal FPATH processing otherwise) */
+ unmetafy(buf, NULL);
if (!access(buf, R_OK)) {
dircache_set(&shf->filename, NULL);
dircache_set(&shf->filename, shf2->filename);