fix unicode indexing in parse(Complex, string) #51758
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes a string-indexing bug introduced in #24713 (Julia 0.7). Sometimes, this would cause
parse(Complex{T}, string)to throw aStringIndexErrorrather than anArgumentError, e.g. forparse(ComplexF64, "3 β+ 4im")orparse(ComplexF64, "3 + 4αm"). (As far as I can tell, it can never cause parsing to fail for valid strings.)The source of the error is that if
iis the index of an ASCII character in a strings, thens[i+1]is valid (even if the next character is non-ASCII) buts[i-1]is invalid if the previous character is non-ASCII.