From 4218032e709ac1f8947d61e3846ec1b09d0474de Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Sun, 24 Jul 2016 23:48:26 +0000 Subject: [PATCH] Fix unique_ptr.runtime tests for null inputs. Patch from STL@microsoft.com git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276587 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp | 11 +++++++++++ .../pointer_deleter01.pass.cpp | 2 ++ 2 files changed, 13 insertions(+) diff --git a/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp b/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp index 6d752b995..50389978e 100644 --- a/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp +++ b/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/null_ctor.pass.cpp @@ -16,6 +16,8 @@ #include #include +#include "test_macros.h" + class Deleter { int state_; @@ -36,9 +38,18 @@ int main() Deleter d; assert(d.state() == 0); { + std::unique_ptr p(nullptr, d); + assert(p.get() == 0); + assert(&p.get_deleter() == &d); + } +#if defined(_LIBCPP_VERSION) + { + // The standard only requires the constructor accept nullptr, but libc++ + // also supports the literal 0. std::unique_ptr p(0, d); assert(p.get() == 0); assert(&p.get_deleter() == &d); } +#endif assert(d.state() == 0); } diff --git a/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp b/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp index 2b0b5f0d9..3de556563 100644 --- a/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp +++ b/test/std/utilities/memory/unique.ptr/unique.ptr.runtime/unique.ptr.runtime.ctor/pointer_deleter01.pass.cpp @@ -42,7 +42,9 @@ int main() assert(A::count == 0); { // LWG#2520 says that nullptr is a valid input as well as null +#ifdef _LIBCPP_VERSION std::unique_ptr > s1(NULL, Deleter()); +#endif std::unique_ptr > s2(nullptr, Deleter()); } assert(A::count == 0);