From: Fangrui Song Date: Sat, 13 Apr 2019 13:52:11 +0000 (+0000) Subject: [ADT] Fix OwningArrayRef's move ctor X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7dd4ca2ea232f6aa4881685d196d8e43b81e1851;p=llvm [ADT] Fix OwningArrayRef's move ctor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358332 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/ArrayRef.h b/include/llvm/ADT/ArrayRef.h index 75bb7d690cc..773c88f7c9f 100644 --- a/include/llvm/ADT/ArrayRef.h +++ b/include/llvm/ADT/ArrayRef.h @@ -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(); diff --git a/unittests/ADT/ArrayRefTest.cpp b/unittests/ADT/ArrayRefTest.cpp index a5609f89ff9..4f8275c4bb3 100644 --- a/unittests/ADT/ArrayRefTest.cpp +++ b/unittests/ADT/ArrayRefTest.cpp @@ -248,6 +248,13 @@ TEST(ArrayRefTest, makeArrayRef) { EXPECT_TRUE(AR2.equals(AR2Ref)); } +TEST(ArrayRefTest, OwningArrayRef) { + static const int A1[] = {0, 1}; + OwningArrayRef A(makeArrayRef(A1)); + OwningArrayRef B(std::move(A)); + EXPECT_EQ(A.data(), nullptr); +} + static_assert(is_trivially_copyable>::value, "trivially copyable");