mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-02 08:46:23 +00:00
Modified Deserializer::ReadCStr to allow C-strings to be read into a
std::vector<char> starting from any index in the vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45129 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
691de38295
commit
8f559ef820
@ -156,7 +156,7 @@ public:
|
||||
}
|
||||
|
||||
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) {
|
||||
|
@ -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());
|
||||
|
Loading…
Reference in New Issue
Block a user