diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2009-11-13 04:55:09 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2009-11-13 04:55:09 +0000 |
commit | ff2c72b858362bdd69c4ecb072d9b41e2db8d68e (patch) | |
tree | a308771600433e0717ad82ba87b0d4e65f3574a9 /llvm/lib/Support/StringExtras.cpp | |
parent | e828c369335871bfe49b1cf07f01faf95304c299 (diff) | |
download | bcm5719-llvm-ff2c72b858362bdd69c4ecb072d9b41e2db8d68e.tar.gz bcm5719-llvm-ff2c72b858362bdd69c4ecb072d9b41e2db8d68e.zip |
Distinguish "a," from "a". The first one splits into "a" + "" and the second one into
"a" + 0.
llvm-svn: 87084
Diffstat (limited to 'llvm/lib/Support/StringExtras.cpp')
-rw-r--r-- | llvm/lib/Support/StringExtras.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Support/StringExtras.cpp b/llvm/lib/Support/StringExtras.cpp index 687394a2fce..1b233ab200a 100644 --- a/llvm/lib/Support/StringExtras.cpp +++ b/llvm/lib/Support/StringExtras.cpp @@ -63,8 +63,10 @@ void llvm::StringRef::split(SmallVectorImpl<StringRef> &A, bool KeepEmpty) const { StringRef rest = *this; + // rest.data() is used to distinguish cases like "a," that splits into + // "a" + "" and "a" that splits into "a" + 0. for (int splits = 0; - rest.size() != 0 && (MaxSplit < 0 || splits < MaxSplit); + rest.data() != NULL && (MaxSplit < 0 || splits < MaxSplit); ++splits) { std::pair<llvm::StringRef, llvm::StringRef> p = rest.split(Separators); @@ -72,7 +74,7 @@ void llvm::StringRef::split(SmallVectorImpl<StringRef> &A, A.push_back(p.first); rest = p.second; } - - if (rest.size() != 0 || KeepEmpty) + // If we have a tail left, add it. + if (rest.data() != NULL && (rest.size() != 0 || KeepEmpty)) A.push_back(rest); } |