diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2015-08-10 19:30:21 -0700 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2015-08-10 19:30:21 -0700 |
commit | aa76f64a94f9b8505e2093757ca2dbb3c8e44f88 (patch) | |
tree | 18e411fff5e09a5b50faeb441e7ea44a8bff97f9 /src/tokenizer.cpp | |
parent | e34a8da5d727ba26aeddd64e9b60a41c0c5312d3 (diff) |
Correct the caret position for unbalanced square brackets
Diffstat (limited to 'src/tokenizer.cpp')
-rw-r--r-- | src/tokenizer.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index e361f88b..b50673ea 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -163,6 +163,9 @@ void tokenizer_t::read_string() // up to 96 open parens, before we give up on good error reporting const size_t paran_offsets_max = 96; size_t paran_offsets[paran_offsets_max]; + + // where the open bracket is + size_t offset_of_bracket = 0; const wchar_t * const start = this->buff; bool is_first = true; @@ -219,7 +222,10 @@ void tokenizer_t::read_string() case L'[': { if (this->buff != start) + { mode = mode_array_brackets; + offset_of_bracket = this->buff - this->orig_buff; + } break; } @@ -361,8 +367,7 @@ void tokenizer_t::read_string() case mode_array_brackets: case mode_array_brackets_and_subshell: { - size_t offset_of_bracket = 0; - TOK_CALL_ERROR(this, TOK_UNTERMINATED_SUBSHELL, SQUARE_BRACKET_ERROR, this->orig_buff + offset_of_bracket); // TOK_UNTERMINATED_SUBSHELL is a lie but nobody actually looks at it + TOK_CALL_ERROR(this, TOK_UNTERMINATED_SLICE, SQUARE_BRACKET_ERROR, this->orig_buff + offset_of_bracket); break; } |