From d57887eaad534ca51fc4975918fab66b2f93633d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Tue, 6 Dec 2011 16:26:05 +0000 Subject: [PATCH] Resolves: rhbz#759647 ::dispose clears mpPresTimer before releaseTimer called --- slideshow/source/engine/slideshowimpl.cxx | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx index 5be3b62..4277280 100644 --- a/slideshow/source/engine/slideshowimpl.cxx +++ b/slideshow/source/engine/slideshowimpl.cxx @@ -2025,10 +2025,14 @@ sal_Bool SlideShowImpl::update( double & nNextTimeout ) // that have zero delay. While the timer is stopped these events // are processed in the same run. { + //Get a shared-ptr that outlives the scope-guard which will + //ensure that the pointed-to-item exists in the case of a + //::dispose clearing mpPresTimer + boost::shared_ptr xTimer(mpPresTimer); comphelper::ScopeGuard scopeGuard( boost::bind( &canvas::tools::ElapsedTime::releaseTimer, - boost::cref(mpPresTimer) ) ); - mpPresTimer->holdTimer(); + boost::cref(xTimer) ) ); + xTimer->holdTimer(); // process queues maEventQueue.process(); -- 1.7.6.4