Fix case when first index is command substitution

This commit is contained in:
maxfl 2012-07-08 09:45:34 +08:00
parent e1b8c425da
commit 079f17761c
3 changed files with 10 additions and 1 deletions

View File

@ -733,7 +733,7 @@ static int parse_slice( const wchar_t *in, wchar_t **end_ptr, std::vector<long>
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>
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 )

View File

@ -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)]

View File

@ -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