diff options
author | Alp Toker <alp@nuanti.com> | 2014-06-07 23:30:53 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-06-07 23:30:53 +0000 |
commit | 6719dde6f3b5a94712a143da016ee5e214dc5f60 (patch) | |
tree | 9816d1db1f44f2998a70f2712543d43294ecb957 /tools | |
parent | b521d7647c33a9de7384146fe89663d63f4fbf25 (diff) | |
download | clang-6719dde6f3b5a94712a143da016ee5e214dc5f60.tar.gz clang-6719dde6f3b5a94712a143da016ee5e214dc5f60.tar.bz2 clang-6719dde6f3b5a94712a143da016ee5e214dc5f60.tar.xz |
Avoid dubious IdentifierInfo::getNameStart() uses
These cases in particular were incurring an extra strlen() when we already knew
the length. They appear to be leftovers from when the interfaces worked with C
strings that have continued to compile due to the implicit StringRef ctor.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210403 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/libclang/CXString.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/libclang/CXString.cpp b/tools/libclang/CXString.cpp index 1523034dbd..662b0f94db 100644 --- a/tools/libclang/CXString.cpp +++ b/tools/libclang/CXString.cpp @@ -81,7 +81,11 @@ CXString createDup(const char *String) { CXString createRef(StringRef String) { // If the string is not nul-terminated, we have to make a copy. - // This is doing a one past end read, and should be removed! + + // FIXME: This is doing a one past end read, and should be removed! For memory + // we don't manage, the API string can become unterminated at any time outside + // our control. + if (!String.empty() && String.data()[String.size()] != 0) return createDup(String); |