Author: kremenek Date: Mon Dec 17 16:25:12 2007 New Revision: 45129 URL: http://llvm.org/viewvc/llvm-project?rev=45129&view=rev Log: Modified Deserializer::ReadCStr to allow C-strings to be read into a std::vector<char> starting from any index in the vector.
Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Modified: llvm/trunk/include/llvm/Bitcode/Deserialize.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Bitcode/Deserialize.h?rev=45129&r1=45128&r2=45129&view=diff ============================================================================== --- llvm/trunk/include/llvm/Bitcode/Deserialize.h (original) +++ llvm/trunk/include/llvm/Bitcode/Deserialize.h Mon Dec 17 16:25:12 2007 @@ -156,7 +156,7 @@ } char* ReadCStr(char* cstr = NULL, unsigned MaxLen=0, bool isNullTerm=true); - void ReadCStr(std::vector<char>& buff, bool isNullTerm=false); + void ReadCStr(std::vector<char>& buff, bool isNullTerm=false, unsigned Idx=0); template <typename T> inline T* ReadOwnedPtr(bool AutoRegister = true) { Modified: llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp?rev=45129&r1=45128&r2=45129&view=diff ============================================================================== --- llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp (original) +++ llvm/trunk/lib/Bitcode/Reader/Deserialize.cpp Mon Dec 17 16:25:12 2007 @@ -329,11 +329,18 @@ 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()); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits