PATCH: fix metafy stuff in add_autoload_function

Mikael Magnusson <[email protected]>
Newsgroups gmane.comp.shells.zsh.devel
Message-ID <[email protected]>
---

This one is used when you've autoloaded one function by absolute path,
and that function in turn wants to autoload a function in the same
directory without specifying the path. This, surprisingly, did not work
if said path had metafied characters in it.

 Src/builtin.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Src/builtin.c b/Src/builtin.c
index 3ec2792969..735cbe98d9 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);
-- 
2.38.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.