diff options
-rw-r--r-- | shell/ash.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/shell/ash.c b/shell/ash.c index bee81920a..2eac6e113 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -12751,7 +12751,7 @@ parsesub: { | |||
12751 | do { | 12751 | do { |
12752 | STPUTC(c, out); | 12752 | STPUTC(c, out); |
12753 | c = pgetc_eatbnl(); | 12753 | c = pgetc_eatbnl(); |
12754 | } while (!subtype && isdigit(c)); | 12754 | } while ((subtype == 0 || subtype == VSLENGTH) && isdigit(c)); |
12755 | } else if (c != '}') { | 12755 | } else if (c != '}') { |
12756 | /* $[{[#]]<specialchar>[}] */ | 12756 | /* $[{[#]]<specialchar>[}] */ |
12757 | int cc = c; | 12757 | int cc = c; |
@@ -12781,11 +12781,6 @@ parsesub: { | |||
12781 | } else | 12781 | } else |
12782 | goto badsub; | 12782 | goto badsub; |
12783 | 12783 | ||
12784 | if (c != '}' && subtype == VSLENGTH) { | ||
12785 | /* ${#VAR didn't end with } */ | ||
12786 | goto badsub; | ||
12787 | } | ||
12788 | |||
12789 | if (subtype == 0) { | 12784 | if (subtype == 0) { |
12790 | static const char types[] ALIGN1 = "}-+?="; | 12785 | static const char types[] ALIGN1 = "}-+?="; |
12791 | /* ${VAR...} but not $VAR or ${#VAR} */ | 12786 | /* ${VAR...} but not $VAR or ${#VAR} */ |
@@ -12842,6 +12837,8 @@ parsesub: { | |||
12842 | #endif | 12837 | #endif |
12843 | } | 12838 | } |
12844 | } else { | 12839 | } else { |
12840 | if (subtype == VSLENGTH && c != '}') | ||
12841 | subtype = 0; | ||
12845 | badsub: | 12842 | badsub: |
12846 | pungetc(); | 12843 | pungetc(); |
12847 | } | 12844 | } |