diff --git a/src/corelib/tools/quniquehandle_p.h b/src/corelib/tools/quniquehandle_p.h index 7af1536c2ed..881dea07ba3 100644 --- a/src/corelib/tools/quniquehandle_p.h +++ b/src/corelib/tools/quniquehandle_p.h @@ -151,7 +151,7 @@ public: return m_handle; } - void reset(const Type& handle) noexcept + void reset(const Type& handle = HandleTraits::invalidValue()) noexcept { if (handle == m_handle) return; diff --git a/tests/auto/corelib/tools/quniquehandle/tst_quniquehandle.cpp b/tests/auto/corelib/tools/quniquehandle/tst_quniquehandle.cpp index ed46999e737..bc8f4685610 100644 --- a/tests/auto/corelib/tools/quniquehandle/tst_quniquehandle.cpp +++ b/tests/auto/corelib/tools/quniquehandle/tst_quniquehandle.cpp @@ -186,7 +186,7 @@ private slots: QCOMPARE_EQ(valid.get(), resource); } - void reset_resetsPreviousValueAndTakesOwnership() const + void reset_resetsPreviousValueAndTakesOwnership_whenCalledWithHandle() const { const auto resource0 = GlobalResource::open(); const auto resource1 = GlobalResource::open(); @@ -198,6 +198,25 @@ private slots: QVERIFY(GlobalResource::isOpen(resource1)); } + void reset_resetsOwningHandleToInvalid_whenCalledWithNoArguments() const + { + const auto resource0 = GlobalResource::open(); + + Handle h{ resource0 }; + h.reset(); + + QVERIFY(!GlobalResource::isOpen(resource0)); + QVERIFY(!h); + } + + void reset_doesNothing_whenCalledOnInvalidHandle() const + { + Handle h{ }; + h.reset(); + + QVERIFY(!h); + } + void release_returnsInvalidResource_whenCalledOnInvalidHandle() const { Handle h;