]> granicus.if.org Git - llvm/commitdiff
[ADT] Fix OwningArrayRef's move ctor
authorFangrui Song <maskray@google.com>
Sat, 13 Apr 2019 13:52:11 +0000 (13:52 +0000)
committerFangrui Song <maskray@google.com>
Sat, 13 Apr 2019 13:52:11 +0000 (13:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358332 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/ArrayRef.h
unittests/ADT/ArrayRefTest.cpp

index 75bb7d690cc0e95fe8857171b4342faa0fc6f9e3..773c88f7c9f99de1a5e040b045b697f465b4015a 100644 (file)
@@ -430,7 +430,7 @@ namespace llvm {
       std::copy(Data.begin(), Data.end(), this->begin());
     }
 
-    OwningArrayRef(OwningArrayRef &&Other) { *this = Other; }
+    OwningArrayRef(OwningArrayRef &&Other) { *this = std::move(Other); }
 
     OwningArrayRef &operator=(OwningArrayRef &&Other) {
       delete[] this->data();
index a5609f89ff95bd3ba647af3f9a6c5142dca6b205..4f8275c4bb3f7d34dc743838782eb60aee8c8ccc 100644 (file)
@@ -248,6 +248,13 @@ TEST(ArrayRefTest, makeArrayRef) {
   EXPECT_TRUE(AR2.equals(AR2Ref));
 }
 
+TEST(ArrayRefTest, OwningArrayRef) {
+  static const int A1[] = {0, 1};
+  OwningArrayRef<int> A(makeArrayRef(A1));
+  OwningArrayRef<int> B(std::move(A));
+  EXPECT_EQ(A.data(), nullptr);
+}
+
 static_assert(is_trivially_copyable<ArrayRef<int>>::value,
               "trivially copyable");