bug fix: infinite loop when cwd doesn't exist

To reproduce:

    % mkdir /tmp/foo
    % cd /tmp/foo
    % rmdir /tmp/foo
    % exec zsh -f
    % source ~/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Press 'a' and zle will hang.
This commit is contained in:
Roman Perepelitsa 2020-07-19 11:03:10 +02:00
parent 2d60a47cc4
commit 585696eeeb
1 changed files with 9 additions and 5 deletions

View File

@ -1211,14 +1211,18 @@ _zsh_highlight_main_highlighter_check_path()
if [[ $expanded_path[1] == / ]]; then
tmp_path=$expanded_path
else
tmp_path=$PWD/$expanded_path
# Unlike $PWD, ${(%):-%/} predictably expands to '.' if the current
# working directory doesn't exist.
tmp_path=${(%):-%/}/$expanded_path
fi
tmp_path=$tmp_path:a
while [[ $tmp_path != / ]]; do
[[ -n ${(M)ZSH_HIGHLIGHT_DIRS_BLACKLIST:#$tmp_path} ]] && return 1
tmp_path=$tmp_path:h
done
if [[ $tmp_path == /* ]]; then
while [[ $tmp_path != / ]]; do
[[ -n ${(M)ZSH_HIGHLIGHT_DIRS_BLACKLIST:#$tmp_path} ]] && return 1
tmp_path=$tmp_path:h
done
fi
if (( in_command_position )); then
if [[ -x $expanded_path ]]; then