Prevent overriding virtual methods that are called in a destructor
Virtual methods are no longer valid once the derived destructor has run. This means the compiler is free to optimize them to be non-virtual. Found using clang-tidy
This commit is contained in:
parent
a1fdc68c65
commit
b9b51f9579
|
@ -108,7 +108,8 @@ public:
|
|||
stop();
|
||||
}
|
||||
|
||||
void stop() override
|
||||
/* Called by destructor, can't be overridden */
|
||||
void stop() override final
|
||||
{
|
||||
{
|
||||
auto state(state_.lock());
|
||||
|
|
|
@ -272,8 +272,10 @@ struct LocalDerivationGoal : public DerivationGoal
|
|||
|
||||
/**
|
||||
* Forcibly kill the child process, if any.
|
||||
*
|
||||
* Called by destructor, can't be overridden
|
||||
*/
|
||||
void killChild() override;
|
||||
void killChild() override final;
|
||||
|
||||
/**
|
||||
* Kill any processes running under the build user UID or in the
|
||||
|
|
|
@ -114,7 +114,8 @@ public:
|
|||
void handleChildOutput(int fd, std::string_view data) override;
|
||||
void handleEOF(int fd) override;
|
||||
|
||||
void cleanup() override;
|
||||
/* Called by destructor, can't be overridden */
|
||||
void cleanup() override final;
|
||||
|
||||
JobCategory jobCategory() override { return JobCategory::Substitution; };
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue