From bd5362511d31142fc62d5f91d13a51f499f509f9 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 17 Dec 2007 22:25:12 +0000 Subject: Modified Deserializer::ReadCStr to allow C-strings to be read into a std::vector starting from any index in the vector. llvm-svn: 45129 --- llvm/lib/Bitcode/Reader/Deserialize.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'llvm/lib/Bitcode') 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& buff, bool isNullTerm) { +void Deserializer::ReadCStr(std::vector& 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()); -- cgit v1.2.3