Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[PATCH] Restrict named directories to scalar parameters set to a path



The documentation of AUTO_NAME_DIRS states that any parameter set to an absolute path becomes a named directory but currently setting any value turns the parameter into a named directory.

- Restrict named directories to scalar parameters set to a path (depends on workers/54759)

Philippe

diff --git a/Src/params.c b/Src/params.c
index 8df594837..dce7a1a63 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -3996,7 +3996,8 @@ strsetfn(Param pm, char *x)
     }
     if (!(pm->node.flags & PM_HASHELEM) && !pm->level &&
 	(PM_TYPE(pm->node.flags) == PM_SCALAR) &&
-	((pm->node.flags & PM_NAMEDDIR) || isset(AUTONAMEDIRS))) {
+	((pm->node.flags & PM_NAMEDDIR) ||
+	 (isset(AUTONAMEDIRS) && x && *x == '/'))) {
 	pm->node.flags |= PM_NAMEDDIR;
 	adduserdir(pm->node.nam, x, 0, 0);
     }
diff --git a/Test/K01nameref.ztst b/Test/K01nameref.ztst
index 54fe8565a..b630be050 100644
--- a/Test/K01nameref.ztst
+++ b/Test/K01nameref.ztst
@@ -1601,8 +1601,8 @@ F:previously this could create an infinite recursion and crash
 >nameddirs=( v1 /1 )
 >nameddirs=( v1 /A )
 >nameddirs=( v1 /A v2 /2 r2 /R )
->nameddirs=( v1 /A r2 /R )
->nameddirs=( v1 /A r2 /R )
+>nameddirs=( v1 /A v2 /2 r2 /R )
+>nameddirs=( v1 /A v2 /2 r2 /R )
 >nameddirs=( v1 /A v2 /B r2 /R )
 *?*
 


Messages sorted by: Reverse Date, Date, Thread, Author