Index: base/message_loop.cc |
=================================================================== |
--- base/message_loop.cc (revision 54696) |
+++ base/message_loop.cc (working copy) |
@@ -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; |
} |