Unset timer in XFA scrollbar after stopping it.
This fixes a crash that happens after interacting with the scrollbar
a few times.
Bug: chromium:820210
Change-Id: I458337f21c9322351474a1574ab596c600dcbbbf
Reviewed-on: https://pdfium-review.googlesource.com/28290
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
diff --git a/xfa/fwl/cfwl_scrollbar.cpp b/xfa/fwl/cfwl_scrollbar.cpp
index 26c367a..1d22386 100644
--- a/xfa/fwl/cfwl_scrollbar.cpp
+++ b/xfa/fwl/cfwl_scrollbar.cpp
@@ -385,8 +385,11 @@
}
void CFWL_ScrollBar::OnLButtonUp(const CFX_PointF& point) {
- if (m_pTimerInfo)
+ if (m_pTimerInfo) {
m_pTimerInfo->StopTimer();
+ m_pTimerInfo = nullptr;
+ }
+
m_bMouseDown = false;
DoMouseUp(0, m_rtMinBtn, m_iMinButtonState, point);
DoMouseUp(1, m_rtThumb, m_iThumbButtonState, point);
@@ -487,8 +490,10 @@
void CFWL_ScrollBar::Timer::Run(CFWL_TimerInfo* pTimerInfo) {
CFWL_ScrollBar* pScrollBar = static_cast<CFWL_ScrollBar*>(m_pWidget.Get());
- if (pScrollBar->m_pTimerInfo)
+ if (pScrollBar->m_pTimerInfo) {
pScrollBar->m_pTimerInfo->StopTimer();
+ pScrollBar->m_pTimerInfo = nullptr;
+ }
if (!pScrollBar->SendEvent())
pScrollBar->m_pTimerInfo = StartTimer(0, true);