diff options
| -rw-r--r-- | st.c | 5 |
1 files changed, 4 insertions, 1 deletions
| @@ -1132,6 +1132,7 @@ csiparse(void) | |||
| 1132 | { | 1132 | { |
| 1133 | char *p = csiescseq.buf, *np; | 1133 | char *p = csiescseq.buf, *np; |
| 1134 | long int v; | 1134 | long int v; |
| 1135 | int sep = ';'; /* colon or semi-colon, but not both */ | ||
| 1135 | 1136 | ||
| 1136 | csiescseq.narg = 0; | 1137 | csiescseq.narg = 0; |
| 1137 | if (*p == '?') { | 1138 | if (*p == '?') { |
| @@ -1149,7 +1150,9 @@ csiparse(void) | |||
| 1149 | v = -1; | 1150 | v = -1; |
| 1150 | csiescseq.arg[csiescseq.narg++] = v; | 1151 | csiescseq.arg[csiescseq.narg++] = v; |
| 1151 | p = np; | 1152 | p = np; |
| 1152 | if (*p != ';' || csiescseq.narg == ESC_ARG_SIZ) | 1153 | if (sep == ';' && *p == ':') |
| 1154 | sep = ':'; /* allow override to colon once */ | ||
| 1155 | if (*p != sep || csiescseq.narg == ESC_ARG_SIZ) | ||
| 1153 | break; | 1156 | break; |
| 1154 | p++; | 1157 | p++; |
| 1155 | } | 1158 | } |
