Simplify memory management in NestedNameSpecifierLocBuilder.

With this change the memory of buffer in NestedNameSpecifierLocBuilder
is allocated in one place. It also prevents from allocation of tiny blocks.

llvm-svn: 213178
This commit is contained in:
Serge Pavlov 2014-07-16 18:18:13 +00:00
parent 62a8e0639b
commit 9f81d6a482
1 changed files with 4 additions and 8 deletions

View File

@ -453,10 +453,8 @@ NestedNameSpecifierLocBuilder(const NestedNameSpecifierLocBuilder &Other)
}
// Deep copy
BufferSize = Other.BufferSize;
BufferCapacity = Other.BufferSize;
Buffer = static_cast<char *>(malloc(BufferCapacity));
memcpy(Buffer, Other.Buffer, BufferSize);
Append(Other.Buffer, Other.Buffer + Other.BufferSize, Buffer, BufferSize,
BufferCapacity);
}
NestedNameSpecifierLocBuilder &
@ -492,10 +490,8 @@ operator=(const NestedNameSpecifierLocBuilder &Other) {
}
// Deep copy.
BufferSize = Other.BufferSize;
BufferCapacity = BufferSize;
Buffer = static_cast<char *>(malloc(BufferSize));
memcpy(Buffer, Other.Buffer, BufferSize);
Append(Other.Buffer, Other.Buffer + Other.BufferSize, Buffer, BufferSize,
BufferCapacity);
return *this;
}