From 9f81d6a4827c56b974529c0ccc6e675c277f6450 Mon Sep 17 00:00:00 2001 From: Serge Pavlov Date: Wed, 16 Jul 2014 18:18:13 +0000 Subject: [PATCH] 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 --- clang/lib/AST/NestedNameSpecifier.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/clang/lib/AST/NestedNameSpecifier.cpp b/clang/lib/AST/NestedNameSpecifier.cpp index e4b39b5..1f041aa 100644 --- a/clang/lib/AST/NestedNameSpecifier.cpp +++ b/clang/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; } -- 2.7.4