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
CrOS-Libchrome-Original-Commit: 24db026c5f670bd4482025fba34848ee69eb614f
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 @@
// 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;
}