about summary refs log tree commit diff
path: root/Completion/Core
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2000-07-02 17:21:54 +0000
committerBart Schaefer <barts@users.sourceforge.net>2000-07-02 17:21:54 +0000
commit4ed8c26c50dea84a01903e6d80b68701d9c4f3c0 (patch)
treec35b85c5cf130f31c96cb8d33191ddbe5f696ade /Completion/Core
parent0f398e9d2fd4f653cf24456bf4fbb4ce277f98e7 (diff)
downloadzsh-4ed8c26c50dea84a01903e6d80b68701d9c4f3c0.tar.gz
zsh-4ed8c26c50dea84a01903e6d80b68701d9c4f3c0.tar.xz
zsh-4ed8c26c50dea84a01903e6d80b68701d9c4f3c0.zip
12133: Protect completion system from stray error output and assorted fatal
errors when expanding strings taken from the command line.
Diffstat (limited to 'Completion/Core')
-rw-r--r--Completion/Core/_expand4
-rw-r--r--Completion/Core/_path_files2
2 files changed, 3 insertions, 3 deletions
diff --git a/Completion/Core/_expand b/Completion/Core/_expand
index 77d9c8794..5ac196428 100644
--- a/Completion/Core/_expand
+++ b/Completion/Core/_expand
@@ -63,7 +63,7 @@ if [[ "$force" = *s* ]] ||
       eval exp\=\( ${${(q)exp}:gs/\\{/\{/:gs/\\}/\}/} \)
   exp=( ${${(e)exp//\\[ 	
 ]/ }//(#b)([ 	
-])/\\$match[1]} )
+])/\\$match[1]} ) 2>/dev/null
 else
   exp=( ${exp:s/\\\$/\$} )
 fi
@@ -77,7 +77,7 @@ subd=("$exp[@]")
 # Now try globbing.
 
 [[ "$force" = *g* ]] || zstyle -T ":completion:${curcontext}:" glob &&
-    exp=( ${~exp} )
+    eval 'exp=( ${~exp} )' 2>/dev/null
 
 # If we don't have any expansions or only one and that is the same
 # as the original string, we let other completers run.
diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files
index 250f6c750..df7f50d8a 100644
--- a/Completion/Core/_path_files
+++ b/Completion/Core/_path_files
@@ -322,7 +322,7 @@ for prepath in "$prepaths[@]"; do
     else
       compfiles -p$cfopt tmp1 accex "$skipped" "$_matcher" '' fake "$pats[@]"
     fi
-    tmp1=( $~tmp1 )
+    eval 'tmp1=( $~tmp1 )' 2>/dev/null
 
     if [[ -n "$PREFIX$SUFFIX" ]]; then
       # See which of them match what's on the line.