| Index: base/message_loop.cc
|
| diff --git a/base/message_loop.cc b/base/message_loop.cc
|
| index fbdc94f13d879a0b938ff4bdcb4a1282499e9d95..4c91b1ff23d423ffaf08d17a4ac6aec6a34d0233 100644
|
| --- a/base/message_loop.cc
|
| +++ b/base/message_loop.cc
|
| @@ -372,10 +372,8 @@ bool MessageLoop::DeletePendingTasks() {
|
| // 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(OS_WIN)
|
| -#ifdef PURIFY
|
| +#if defined(PURIFY)
|
| delete pending_task.task;
|
| -#endif // PURIFY
|
| #elif defined(OS_POSIX)
|
| if (RUNNING_ON_VALGRIND)
|
| delete pending_task.task;
|
| @@ -385,14 +383,17 @@ bool MessageLoop::DeletePendingTasks() {
|
| did_work |= !deferred_non_nestable_work_queue_.empty();
|
| while (!deferred_non_nestable_work_queue_.empty()) {
|
| // TODO(darin): Delete all tasks once it is safe to do so.
|
| - // Until it is totaly safe, just delete them to keep purify happy.
|
| -#ifdef PURIFY
|
| - Task* task = deferred_non_nestable_work_queue_.front().task;
|
| + // 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();
|
| -#ifdef PURIFY
|
| - delete task;
|
| -#endif
|
| + if (task)
|
| + delete task;
|
| }
|
| did_work |= !delayed_work_queue_.empty();
|
| while (!delayed_work_queue_.empty()) {
|
|
|