From: Serge Pavlov Date: Wed, 16 Jul 2014 18:18:13 +0000 (+0000) Subject: Simplify memory management in NestedNameSpecifierLocBuilder. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ce57c7e38ed5a644266b830d359a3c813bc15c4;p=clang 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@213178 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/NestedNameSpecifier.cpp b/lib/AST/NestedNameSpecifier.cpp index e4b39b58ab..1f041aa495 100644 --- a/lib/AST/NestedNameSpecifier.cpp +++ b/lib/AST/NestedNameSpecifier.cpp @@ -453,10 +453,8 @@ NestedNameSpecifierLocBuilder(const NestedNameSpecifierLocBuilder &Other) } // Deep copy - BufferSize = Other.BufferSize; - BufferCapacity = Other.BufferSize; - Buffer = static_cast(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(malloc(BufferSize)); - memcpy(Buffer, Other.Buffer, BufferSize); + Append(Other.Buffer, Other.Buffer + Other.BufferSize, Buffer, BufferSize, + BufferCapacity); return *this; }