From 4ed8c26c50dea84a01903e6d80b68701d9c4f3c0 Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Sun, 2 Jul 2000 17:21:54 +0000 Subject: 12133: Protect completion system from stray error output and assorted fatal errors when expanding strings taken from the command line. --- ChangeLog | 7 +++++++ Completion/Core/_expand | 4 ++-- Completion/Core/_path_files | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5276d12f0..81a1d3a7d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2000-07-02 Bart Schaefer + + * 12133: Completion/Core/_expand, Completion/Core/_path_files: + Discard error output from parameter expansions and use "eval" to + protect the completion system from parse errors and other garbage + in the strings taken from the command line. + 2000-06-29 Sven Wischnowsky * 12125: Src/parse.c, Test/09funcdef.ztst: fix for `foo () print 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. -- cgit v1.2.3