Avoid infinite loop in case where pwd returns relative path

The `pwd` may return relative path if the `$PWD` is badly declared
in bash/zsh (e.g. `PWD="." bash`). To avoid the infinite loop in
`find_local_version_file()`, stop finding the version file if the
target paths are same consecutively.
This commit is contained in:
Yamashita Yuu 2014-01-03 07:43:39 +09:00
parent 8dc4e8d6f8
commit 4c5ffc8d99

View file

@ -4,8 +4,8 @@ set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
find_local_version_file() { find_local_version_file() {
local root="$1" local prev root="$1"
while [ -n "$root" ]; do while [ -n "$root" ] && [ "$root" != "$prev" ]; do
if [ -e "${root}/.python-version" ]; then if [ -e "${root}/.python-version" ]; then
echo "${root}/.python-version" echo "${root}/.python-version"
exit exit
@ -13,6 +13,7 @@ find_local_version_file() {
echo "${root}/.pyenv-version" echo "${root}/.pyenv-version"
exit exit
fi fi
prev="${root}"
root="${root%/*}" root="${root%/*}"
done done
} }