ConfigAPI: release handle in move operator/constructor before overwriting it.

This commit is contained in:
Maschell
2024-12-30 14:15:28 +01:00
parent d9ce5d71b0
commit 5214252a99
4 changed files with 72 additions and 35 deletions

View File

@@ -4,7 +4,6 @@
#include "WUPSConfigItem.h"
#include <optional>
#include <stdexcept>
#include <string>
class WUPSConfigCategory {
@@ -14,17 +13,11 @@ public:
WUPSConfigCategory(const WUPSConfigCategory &) = delete;
WUPSConfigCategory(WUPSConfigCategory &&src) noexcept : mHandle(src.mHandle) {
src.mHandle = {};
}
WUPSConfigCategory(WUPSConfigCategory &&src) noexcept;
WUPSConfigCategory &operator=(WUPSConfigCategory &&src) noexcept {
if (this != &src) {
this->mHandle = src.mHandle;
src.mHandle = {};
}
return *this;
}
WUPSConfigCategory &operator=(WUPSConfigCategory &&src) noexcept;
void releaseHandle() noexcept;
static std::optional<WUPSConfigCategory> Create(std::string_view name, WUPSConfigAPIStatus &error) noexcept;
@@ -38,13 +31,9 @@ public:
void add(WUPSConfigItem &&item);
[[nodiscard]] const WUPSConfigCategoryHandle &getHandle() const {
return mHandle;
}
[[nodiscard]] const WUPSConfigCategoryHandle &getHandle() const;
void release() {
mHandle = {};
}
void release();
private:
WUPSConfigCategoryHandle mHandle = {};

View File

@@ -14,25 +14,15 @@ public:
WUPSConfigItem(const WUPSConfigItem &) = delete;
WUPSConfigItem(WUPSConfigItem &&src) noexcept : mHandle(src.mHandle) {
src.mHandle = {};
}
WUPSConfigItem(WUPSConfigItem &&src) noexcept;
WUPSConfigItem &operator=(WUPSConfigItem &&src) noexcept {
if (this != &src) {
this->mHandle = src.mHandle;
src.mHandle = {};
}
return *this;
}
WUPSConfigItem &operator=(WUPSConfigItem &&src) noexcept;
[[nodiscard]] const WUPSConfigItemHandle &getHandle() const {
return mHandle;
}
void releaseHandle() noexcept;
void release() {
mHandle = {};
}
[[nodiscard]] const WUPSConfigItemHandle &getHandle() const;
void release();
private:
WUPSConfigItemHandle mHandle = {};