diff options
Diffstat (limited to 'shell')
| -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 | } |
