Skip to content

Commit 21d1e2e

Browse files
committed
[Macros] Fix memory leak in PluginSearchOption
Destructor of PluginSearchOption wasn't properly implemented. Implement special member functions. rdar://111064325
1 parent 50d2f4d commit 21d1e2e

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

include/swift/AST/SearchPathOptions.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,23 @@ class PluginSearchOption {
247247
: kind(Kind::ExternalPluginPath) {
248248
storage.emplace<ExternalPluginPath>(kind, v);
249249
}
250+
PluginSearchOption(const PluginSearchOption &o) : kind(o.kind) {
251+
storage.copyConstruct(o.kind, o.storage);
252+
}
253+
PluginSearchOption(PluginSearchOption &&o) : kind(o.kind) {
254+
storage.moveConstruct(o.kind, std::move(o.storage));
255+
}
256+
~PluginSearchOption() { storage.destruct(kind); }
257+
PluginSearchOption &operator=(const PluginSearchOption &o) {
258+
storage.copyAssign(kind, o.kind, o.storage);
259+
kind = o.kind;
260+
return *this;
261+
}
262+
PluginSearchOption &operator=(PluginSearchOption &&o) {
263+
storage.moveAssign(kind, o.kind, std::move(o.storage));
264+
kind = o.kind;
265+
return *this;
266+
}
250267

251268
Kind getKind() const { return kind; }
252269

0 commit comments

Comments
 (0)