]> granicus.if.org Git - clang/commit
Frontend: Fix SourceColumnMap assertion failure on non-ascii characters.
authorLogan Chien <tzuhsiang.chien@gmail.com>
Thu, 8 Jan 2015 13:19:07 +0000 (13:19 +0000)
committerLogan Chien <tzuhsiang.chien@gmail.com>
Thu, 8 Jan 2015 13:19:07 +0000 (13:19 +0000)
commit3ce12ac54fbf16fe381db0c3515b59a0149a233e
tree25ec53886e16c089e7f800dea06c6961b81ff9bd
parentf64def2baa796369c519a1e63e33916b44b655ca
Frontend: Fix SourceColumnMap assertion failure on non-ascii characters.

If there are some non-ascii character in the input source code, the
column index might be smallar than the byte index.  This will result
in two possible assertion failures.  This CL fixes the computation of
the column index and byte index.

1. The assertion in startOfNextColumn() and startOfPreviousColumn()
   should not be raised when the byte index is greater than the column
   index since the non-ascii characters may use more than one bytes to
   store a character in a column.

2. The length of the caret line should be equal to the number of columns
   of source line, instead of the length of the source line.  Otherwise,
   the assertion in selectInterestingSourceRegion will be raised because
   the removed columns plus the kept columns are not greater than the max
   column, which means that we should not remove any column at all.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@225442 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Frontend/TextDiagnostic.cpp
test/Frontend/source-col-map.c [new file with mode: 0644]