]> granicus.if.org Git - clang/commitdiff
Simplify memory management in NestedNameSpecifierLocBuilder.
authorSerge Pavlov <sepavloff@gmail.com>
Wed, 16 Jul 2014 18:18:13 +0000 (18:18 +0000)
committerSerge Pavlov <sepavloff@gmail.com>
Wed, 16 Jul 2014 18:18:13 +0000 (18:18 +0000)
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

lib/AST/NestedNameSpecifier.cpp

index e4b39b58ab8c6b94da70960a2acc5f2aa2ee7038..1f041aa495420d3551d5f6f5ce989f9ffb2e3404 100644 (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;
 }