diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-12-17 22:25:12 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-12-17 22:25:12 +0000 |
commit | bd5362511d31142fc62d5f91d13a51f499f509f9 (patch) | |
tree | cb45b5b2f9ae089e75c55c2bbb9d2440454febe7 /llvm/lib/Bitcode/Reader | |
parent | a2401be121eac6d63ea295454bccd9830260bf9b (diff) | |
download | bcm5719-llvm-bd5362511d31142fc62d5f91d13a51f499f509f9.tar.gz bcm5719-llvm-bd5362511d31142fc62d5f91d13a51f499f509f9.zip |
Modified Deserializer::ReadCStr to allow C-strings to be read into a
std::vector<char> starting from any index in the vector.
llvm-svn: 45129
Diffstat (limited to 'llvm/lib/Bitcode/Reader')
-rw-r--r-- | llvm/lib/Bitcode/Reader/Deserialize.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/lib/Bitcode/Reader/Deserialize.cpp b/llvm/lib/Bitcode/Reader/Deserialize.cpp index cb32f7d5efe..8e0b62c5095 100644 --- a/llvm/lib/Bitcode/Reader/Deserialize.cpp +++ b/llvm/lib/Bitcode/Reader/Deserialize.cpp @@ -329,11 +329,18 @@ char* Deserializer::ReadCStr(char* cstr, unsigned MaxLen, bool isNullTerm) { return cstr; } -void Deserializer::ReadCStr(std::vector<char>& buff, bool isNullTerm) { +void Deserializer::ReadCStr(std::vector<char>& buff, bool isNullTerm, + unsigned Idx) { + unsigned len = ReadInt(); - buff.clear(); - buff.reserve(len); + // If Idx is beyond the current before size, reduce Idx to refer to the + // element after the last element. + if (Idx > buff.size()) + Idx = buff.size(); + + buff.reserve(len+Idx); + buff.resize(Idx); for (unsigned i = 0; i < len; ++i) buff.push_back((char) ReadInt()); |