# # # patch "src/model/AutomateCommand.cpp" # from [e98dedabd7391e9921f015cea8f272d2c48e719e] # to [419f678ac1d3f6cf45698f159f768211f70a0473] # # patch "src/model/AutomateCommand.h" # from [d0ad218af3a52074a5b41fc6590804f2a96b6a0e] # to [9793ba5d7cb5b1b5e7199bd0783dcf074098892f] # ============================================================ --- src/model/AutomateCommand.cpp e98dedabd7391e9921f015cea8f272d2c48e719e +++ src/model/AutomateCommand.cpp 419f678ac1d3f6cf45698f159f768211f70a0473 @@ -21,16 +21,22 @@ AutomateCommand::AutomateCommand(Automat AutomateCommand::AutomateCommand(AutomateCommandHelper * helper) { + // ensure that we only delete stuff later on we actually created ourselves if (helper == 0) { - helper = new AutomateCommandHelper(this); + cmdHelperCreated = true; + cmdHelper = new AutomateCommandHelper(this); } - cmdHelper = helper; + else + { + cmdHelperCreated = false; + cmdHelper = helper; + } } AutomateCommand::~AutomateCommand() { - delete cmdHelper; + if (cmdHelperCreated) delete cmdHelper; } void AutomateCommand::enqueueTask(MonotoneThread * thread, const MonotoneTask & task) @@ -101,6 +107,7 @@ void AutomateCommandHelper::taskFinished { return; } + command->processTaskResult(task); } ============================================================ --- src/model/AutomateCommand.h d0ad218af3a52074a5b41fc6590804f2a96b6a0e +++ src/model/AutomateCommand.h 9793ba5d7cb5b1b5e7199bd0783dcf074098892f @@ -46,6 +46,7 @@ private: QList connectedThreads; QMap > queuedCommands; AutomateCommandHelper * cmdHelper; + bool cmdHelperCreated; }; // Qt's class hierarchy doesn't support multiple inheritance, so we need