diff --git a/expand.cpp b/expand.cpp index 4a3eaf015..76b16ae55 100644 --- a/expand.cpp +++ b/expand.cpp @@ -733,7 +733,7 @@ static int parse_slice( const wchar_t *in, wchar_t **end_ptr, std::vector int pos = 1; - // debug( 0, L"parse_slice on '%ls'", in ); + // debug( 0, L"parse_slice on '%ls'", in ); while( 1 ) { @@ -758,6 +758,8 @@ static int parse_slice( const wchar_t *in, wchar_t **end_ptr, std::vector long i1 = tmp>-1 ? tmp : size+tmp+1; pos = end-in; + while( in[pos]==INTERNAL_SEPARATOR ) + pos++; if ( in[pos]==L'.' && in[pos+1]==L'.' ){ pos+=2; while( in[pos]==INTERNAL_SEPARATOR ) diff --git a/tests/test8.in b/tests/test8.in index 3a76e8bf8..c3c733848 100644 --- a/tests/test8.in +++ b/tests/test8.in @@ -19,3 +19,7 @@ set test1[2..4 -2..-4] $test1[4..2 -4..-2]; echo $test1 echo Test command substitution echo (seq 5)[-1..1] echo (seq $n)[3..5 -2..2] + +echo Test more +echo $test[(count $test)..1] +echo $test[1..(count $test)] diff --git a/tests/test8.out b/tests/test8.out index 82bf40942..72af9bb81 100644 --- a/tests/test8.out +++ b/tests/test8.out @@ -12,3 +12,6 @@ Test variable set Test command substitution 5 4 3 2 1 3 4 5 9 8 7 6 5 4 3 2 +Test more +10 9 8 7 6 5 4 3 2 1 +1 2 3 4 5 6 7 8 9 10