diff options
| -rw-r--r-- | src/tools/codemodelbackend/ipcsource/projectpart.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/tools/codemodelbackend/ipcsource/projectpart.cpp b/src/tools/codemodelbackend/ipcsource/projectpart.cpp index fedbd3026f..d4ee4a1797 100644 --- a/src/tools/codemodelbackend/ipcsource/projectpart.cpp +++ b/src/tools/codemodelbackend/ipcsource/projectpart.cpp @@ -41,6 +41,10 @@ namespace CodeModelBackEnd { class ProjectPartData { public: ProjectPartData(const Utf8String &projectPartId); + ~ProjectPartData(); + +public: + void clearArguments(); public: time_point lastChangeTimePoint; @@ -48,12 +52,25 @@ public: Utf8String projectPartId; }; +void ProjectPartData::clearArguments() +{ + for (auto argument : arguments) + delete [] argument; + + arguments.clear(); +} + ProjectPartData::ProjectPartData(const Utf8String &projectPartId) : lastChangeTimePoint(std::chrono::steady_clock::now()), projectPartId(projectPartId) { } +ProjectPartData::~ProjectPartData() +{ + clearArguments(); +} + ProjectPart::ProjectPart(const Utf8String &projectPartId) : d(std::make_shared<ProjectPartData>(projectPartId)) { @@ -66,7 +83,6 @@ ProjectPart::ProjectPart(const ProjectPartContainer &projectContainer) } ProjectPart::~ProjectPart() = default; - ProjectPart::ProjectPart(const ProjectPart &) = default; ProjectPart &ProjectPart::operator =(const ProjectPart &) = default; @@ -102,6 +118,7 @@ static const char *strdup(const Utf8String &utf8String) void ProjectPart::setArguments(const Utf8StringVector &arguments) { + d->clearArguments(); d->arguments.resize(arguments.size()); std::transform(arguments.cbegin(), arguments.cend(), d->arguments.begin(), strdup); updateLastChangeTimePoint(); |
