Commit 60c47c00 by Ian Lance Taylor

compiler: Allow string slices with start index == length.

    
    Avoid an off-by-one error when checking the start index of a string
    slice by allowing the start index to be the string length instead
    of the string length - 1.
    
    Fixes golang/go#11522.
    
    Reviewed-on: https://go-review.googlesource.com/13030

From-SVN: r227191
parent c316b5e4
d6d59d5927c4ea0c02468ebc6a2df431fb64595a 14ca4b6130b9a7132d132f418e9ea283b3a52c08
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -10341,7 +10341,10 @@ String_index_expression::do_check_types(Gogo*) ...@@ -10341,7 +10341,10 @@ String_index_expression::do_check_types(Gogo*)
{ {
ival_valid = true; ival_valid = true;
if (mpz_sgn(ival) < 0 if (mpz_sgn(ival) < 0
|| (sval_valid && mpz_cmp_ui(ival, sval.length()) >= 0)) || (sval_valid
&& (this->end_ == NULL
? mpz_cmp_ui(ival, sval.length()) >= 0
: mpz_cmp_ui(ival, sval.length()) > 0)))
{ {
error_at(this->start_->location(), "string index out of bounds"); error_at(this->start_->location(), "string index out of bounds");
this->set_is_error(); this->set_is_error();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment