summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/MultiplexConsumer.cpp
diff options
context:
space:
mode:
authorGraydon Hoare <ghoare@apple.com>2018-03-27 19:52:45 +0000
committerGraydon Hoare <ghoare@apple.com>2018-03-27 19:52:45 +0000
commit926cd9b83783e2c55a5289542197c198eeb4cba5 (patch)
tree8a96d527cd64172370621678fb2025155480e8e8 /clang/lib/Frontend/MultiplexConsumer.cpp
parent0272cb077f4da79a7ac23c4079a29aaa517c2d7f (diff)
downloadbcm5719-llvm-926cd9b83783e2c55a5289542197c198eeb4cba5.tar.gz
bcm5719-llvm-926cd9b83783e2c55a5289542197c198eeb4cba5.zip
[YAML] Escape non-printable multibyte UTF8 in Output::scalarString.
The existing YAML Output::scalarString code path includes a partial and incorrect implementation of YAML escaping logic. In particular, the logic put in place in rL321283 escapes non-printable bytes only if they are not part of a multibyte UTF8 sequence; implicitly this means that all multibyte UTF8 sequences -- printable and non -- are passed through verbatim. The simplest solution to this is to direct the Output::scalarString method to use the standalone yaml::escape function, and this _almost_ works, except that the existing code in that function _over_ escapes: any multibyte UTF8 sequence is escaped, even printable ones. While this is permitted for YAML, it is also more aggressive (and hard to read for non-English locales) than necessary, and the entire point of rL321283 was to back off such aggressive over-escaping. So in this change, I have both redirected Output::scalarString to use yaml::escape _and_ modified yaml::escape to optionally restrict its escaping to non-printables. This preserves behaviour of any existing clients while giving them a path to more moderate escaping should they desire. Reviewers: JDevlieghere, thegameg, MatzeB, vladimir.plyashkun Reviewed By: thegameg Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D44863 llvm-svn: 328661
Diffstat (limited to 'clang/lib/Frontend/MultiplexConsumer.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud