diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-03 03:06:21 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-03 03:06:21 +0000 |
commit | 24db026c5f670bd4482025fba34848ee69eb614f (patch) | |
tree | cb674d9c6e8f7ec0bdb1e61536eda6f9fe95f576 /base/message_loop.cc | |
parent | 76b90d310def447b7b5f10d92a69813308150778 (diff) | |
download | chromium_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.cc | 23 |
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; } |