summaryrefslogtreecommitdiffstats
path: root/base/message_loop.cc
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-03 03:06:21 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-03 03:06:21 +0000
commit24db026c5f670bd4482025fba34848ee69eb614f (patch)
treecb674d9c6e8f7ec0bdb1e61536eda6f9fe95f576 /base/message_loop.cc
parent76b90d310def447b7b5f10d92a69813308150778 (diff)
downloadchromium_src-24db026c5f670bd4482025fba34848ee69eb614f.zip
chromium_src-24db026c5f670bd4482025fba34848ee69eb614f.tar.gz
chromium_src-24db026c5f670bd4482025fba34848ee69eb614f.tar.bz2
Revert 54584 - Delete tasks unconditionally in MessageLoop::DeletePendingTasks().
BUG=6532 TEST=existing unit tests Review URL: http://codereview.chromium.org/3076015 TBR=akalin@chromium.org Review URL: http://codereview.chromium.org/2878074 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54697 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/message_loop.cc')
-rw-r--r--base/message_loop.cc23
1 files changed, 21 insertions, 2 deletions
diff --git a/base/message_loop.cc b/base/message_loop.cc
index d67e64a..1d86f79 100644
--- a/base/message_loop.cc
+++ b/base/message_loop.cc
@@ -466,18 +466,37 @@ bool MessageLoop::DeletePendingTasks() {
// tasks.
AddToDelayedWorkQueue(pending_task);
} else {
+ // TODO(darin): Delete all tasks once it is safe to do so.
+ // Until it is totally safe, just do it when running Purify or
+ // Valgrind.
+#if defined(PURIFY)
delete pending_task.task;
+#elif defined(OS_POSIX)
+ if (RUNNING_ON_VALGRIND)
+ delete pending_task.task;
+#endif // defined(OS_POSIX)
}
}
did_work |= !deferred_non_nestable_work_queue_.empty();
while (!deferred_non_nestable_work_queue_.empty()) {
- delete deferred_non_nestable_work_queue_.front().task;
+ // TODO(darin): Delete all tasks once it is safe to do so.
+ // Until it is totaly safe, only delete them under Purify and Valgrind.
+ Task* task = NULL;
+#if defined(PURIFY)
+ task = deferred_non_nestable_work_queue_.front().task;
+#elif defined(OS_POSIX)
+ if (RUNNING_ON_VALGRIND)
+ task = deferred_non_nestable_work_queue_.front().task;
+#endif
deferred_non_nestable_work_queue_.pop();
+ if (task)
+ delete task;
}
did_work |= !delayed_work_queue_.empty();
while (!delayed_work_queue_.empty()) {
- delete delayed_work_queue_.top().task;
+ Task* task = delayed_work_queue_.top().task;
delayed_work_queue_.pop();
+ delete task;
}
return did_work;
}