Skip to content

Commit 67c29e2

Browse files
committed
[ADT] Fix OwningArrayRef's move ctor
llvm-svn: 358332
1 parent 41e284b commit 67c29e2

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

llvm/include/llvm/ADT/ArrayRef.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ namespace llvm {
430430
std::copy(Data.begin(), Data.end(), this->begin());
431431
}
432432

433-
OwningArrayRef(OwningArrayRef &&Other) { *this = Other; }
433+
OwningArrayRef(OwningArrayRef &&Other) { *this = std::move(Other); }
434434

435435
OwningArrayRef &operator=(OwningArrayRef &&Other) {
436436
delete[] this->data();

llvm/unittests/ADT/ArrayRefTest.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,13 @@ TEST(ArrayRefTest, makeArrayRef) {
248248
EXPECT_TRUE(AR2.equals(AR2Ref));
249249
}
250250

251+
TEST(ArrayRefTest, OwningArrayRef) {
252+
static const int A1[] = {0, 1};
253+
OwningArrayRef<int> A(makeArrayRef(A1));
254+
OwningArrayRef<int> B(std::move(A));
255+
EXPECT_EQ(A.data(), nullptr);
256+
}
257+
251258
static_assert(is_trivially_copyable<ArrayRef<int>>::value,
252259
"trivially copyable");
253260

0 commit comments

Comments
 (0)