--- a/src/execmd.cpp
+++ b/src/execmd.cpp
@@ -21,8 +21,6 @@
#include "config.h"
#endif
-#include <map>
-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -38,6 +36,7 @@
#include <time.h>
#include <string.h>
+#include <map>
#include <vector>
#include <string>
#include <stdexcept>
@@ -301,15 +300,18 @@
m_parent->reset();
}
private:
- ExecCmd::Internal *m_parent;
- bool m_active;
+ ExecCmd::Internal *m_parent{nullptr};
+ bool m_active{false};
};
ExecCmd::~ExecCmd()
{
- ExecCmdRsrc(this->m);
+ if (m) {
+ ExecCmdRsrc r(m);
+ }
if (m) {
delete m;
+ m = nullptr;
}
}
@@ -458,7 +460,7 @@
}
// The resource manager ensures resources are freed if we return early
- ExecCmdRsrc e(this->m);
+ ExecCmdRsrc e(m);
if (has_input && pipe(m->m_pipein) < 0) {
LOGERR("ExecCmd::startExec: pipe(2) failed. errno " << errno << "\n" );
@@ -769,7 +771,7 @@
}
// Cleanup in case we return early
- ExecCmdRsrc e(this->m);
+ ExecCmdRsrc e(m);
SelectLoop myloop;
int ret = 0;
if (input || output) {
@@ -971,7 +973,7 @@
// overhead.
int ExecCmd::wait()
{
- ExecCmdRsrc e(this->m);
+ ExecCmdRsrc e(m);
int status = -1;
if (!m->m_killRequest && m->m_pid > 0) {
if (waitpid(m->m_pid, &status, 0) < 0) {
@@ -987,7 +989,7 @@
bool ExecCmd::maybereap(int *status)
{
- ExecCmdRsrc e(this->m);
+ ExecCmdRsrc e(m);
*status = -1;
if (m->m_pid <= 0) {