diff options
Diffstat (limited to 'base/message_loop.h')
-rw-r--r-- | base/message_loop.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/base/message_loop.h b/base/message_loop.h index 6cd0ef4..2e51234 100644 --- a/base/message_loop.h +++ b/base/message_loop.h @@ -269,8 +269,19 @@ class MessageLoop : public base::MessagePump::Delegate { bool operator<(const PendingTask& other) const; }; + // TEMP HACK: This is the same as std::less, except it has a data member. + // This should cause its storage to be initialized, therefore avoiding a + // UMR in pop(). Experiment for crbug.com/5555. + template<class T> + struct LessComparatorHack { + LessComparatorHack() : junk(42) {} + bool operator()(const T& a, const T& b) const { return a < b; } + int junk; + }; + typedef std::queue<PendingTask> TaskQueue; - typedef std::priority_queue<PendingTask> DelayedTaskQueue; + typedef std::priority_queue<PendingTask, std::vector<PendingTask>, + LessComparatorHack<PendingTask> > DelayedTaskQueue; #if defined(OS_WIN) base::MessagePumpWin* pump_win() { |