From 2bbedf413cf1f679e4d49aa7e3a5ea5684e62555 Mon Sep 17 00:00:00 2001 From: Artyom Abakumov Date: Thu, 23 Apr 2026 16:37:14 +0300 Subject: [PATCH 1/2] Add missing clear in AutoPtr move assign operator --- src/common/classes/auto.h | 1 + src/common/tests/AutoPtrTests.cpp | 47 +++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/common/tests/AutoPtrTests.cpp diff --git a/src/common/classes/auto.h b/src/common/classes/auto.h index fffbb61c736..cc4d59b973f 100644 --- a/src/common/classes/auto.h +++ b/src/common/classes/auto.h @@ -132,6 +132,7 @@ class AutoPtr { if (this != &r) { + Clear::clear(ptr); ptr = r.ptr; r.ptr = nullptr; } diff --git a/src/common/tests/AutoPtrTests.cpp b/src/common/tests/AutoPtrTests.cpp new file mode 100644 index 00000000000..f344da0bc86 --- /dev/null +++ b/src/common/tests/AutoPtrTests.cpp @@ -0,0 +1,47 @@ +#include "boost/test/unit_test.hpp" +#include "../common/classes/auto.h" + + +using namespace Firebird; + + +BOOST_AUTO_TEST_SUITE(CommonClassesSuite) +BOOST_AUTO_TEST_SUITE(AutoPtrFunctionalTests) + +static int aliveCounter = 0; + +class TestRefCounter +{ +public: + TestRefCounter() + { + ++aliveCounter; + } + ~TestRefCounter() + { + --aliveCounter; + } +}; + + +AutoPtr makePtr() +{ + return AutoPtr(new TestRefCounter()); +} + +BOOST_AUTO_TEST_CASE(StringAssignmentTest) +{ + AutoPtr ptr; + + ptr = makePtr(); + + ptr = makePtr(); + + ptr.reset(); + + BOOST_TEST(aliveCounter == 0); +} + + +BOOST_AUTO_TEST_SUITE_END() // AutoPtrFunctionalTests +BOOST_AUTO_TEST_SUITE_END() // CommonClassesSuite From 60a28eb81cb457562248ab5bb45bc035cac77faa Mon Sep 17 00:00:00 2001 From: Artyom Abakumov Date: Thu, 23 Apr 2026 16:39:10 +0300 Subject: [PATCH 2/2] Remove blank lines --- src/common/tests/AutoPtrTests.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/common/tests/AutoPtrTests.cpp b/src/common/tests/AutoPtrTests.cpp index f344da0bc86..765f3ad3f5f 100644 --- a/src/common/tests/AutoPtrTests.cpp +++ b/src/common/tests/AutoPtrTests.cpp @@ -1,10 +1,8 @@ #include "boost/test/unit_test.hpp" #include "../common/classes/auto.h" - using namespace Firebird; - BOOST_AUTO_TEST_SUITE(CommonClassesSuite) BOOST_AUTO_TEST_SUITE(AutoPtrFunctionalTests) @@ -23,7 +21,6 @@ class TestRefCounter } }; - AutoPtr makePtr() { return AutoPtr(new TestRefCounter());