This hopefully fixes a double delete bug. I don't see what would prevent both
RunnerManager::jobDone() and DelayedJobCleaner::jobDone() from being invoked if the JobDone() signal is emitted just at the right (wrong) time. Both jobDone() slots delete (as in delete operator) the job. CCMAIL:aseigo@kde.org svn path=/trunk/KDE/kdelibs/; revision=1033035
This commit is contained in:
parent
633d51612c
commit
d0ecf4ae88
@ -190,7 +190,7 @@ void DelayedJobCleaner::jobDone(ThreadWeaver::Job *job)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_jobs.remove(runJob);
|
m_jobs.remove(runJob);
|
||||||
delete runJob;
|
runJob->deleteLater();
|
||||||
|
|
||||||
if (m_jobs.isEmpty()) {
|
if (m_jobs.isEmpty()) {
|
||||||
deleteLater();
|
deleteLater();
|
||||||
|
@ -191,13 +191,13 @@ public:
|
|||||||
if (deferredRun.isEnabled() && runJob->runner() == deferredRun.runner()) {
|
if (deferredRun.isEnabled() && runJob->runner() == deferredRun.runner()) {
|
||||||
//kDebug() << "job actually done, running now **************";
|
//kDebug() << "job actually done, running now **************";
|
||||||
QueryMatch tmpRun = deferredRun;
|
QueryMatch tmpRun = deferredRun;
|
||||||
deferredRun = QueryMatch(0);
|
deferredRun = QueryMatch(0);
|
||||||
tmpRun.run(context);
|
tmpRun.run(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
searchJobs.remove(runJob);
|
searchJobs.remove(runJob);
|
||||||
oldSearchJobs.remove(runJob);
|
oldSearchJobs.remove(runJob);
|
||||||
delete runJob;
|
runJob->deleteLater();
|
||||||
|
|
||||||
if (searchJobs.isEmpty() && context.matches().isEmpty()) {
|
if (searchJobs.isEmpty() && context.matches().isEmpty()) {
|
||||||
// we finished our run, and there are no valid matches, and so no
|
// we finished our run, and there are no valid matches, and so no
|
||||||
|
Loading…
Reference in New Issue
Block a user