From: <sv...@op...> - 2025-02-25 21:35:31
|
Author: sagamusix Date: Tue Feb 25 22:35:25 2025 New Revision: 22973 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22973 Log: [Fix] Sample tab: Fix crash when replacing a sample with a shorter one while outside of the sample editor, and then returning to the same sample slot (https://bugs.openmpt.org/view.php?id=1866). Modified: trunk/OpenMPT/mptrack/Globals.cpp trunk/OpenMPT/mptrack/View_smp.cpp Modified: trunk/OpenMPT/mptrack/Globals.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Globals.cpp Tue Feb 25 21:04:47 2025 (r22972) +++ trunk/OpenMPT/mptrack/Globals.cpp Tue Feb 25 22:35:25 2025 (r22973) @@ -801,8 +801,12 @@ SCROLLINFO info; if(GetScrollInfo(SB_HORZ, &info, SIF_POS)) m_nScrollPosX = info.nPos; + else + m_nScrollPosX = 0; if(GetScrollInfo(SB_VERT, &info, SIF_POS)) m_nScrollPosY = info.nPos; + else + m_nScrollPosY = 0; } Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Tue Feb 25 21:04:47 2025 (r22972) +++ trunk/OpenMPT/mptrack/View_smp.cpp Tue Feb 25 22:35:25 2025 (r22973) @@ -1001,10 +1001,10 @@ const CRect rcClient = m_rcClient; CRect rect, rc; - const SmpLength smpScrollPos = ScrollPosToSamplePos(); const auto &colors = TrackerSettings::Instance().rgbCustomColors; const CSoundFile &sndFile = pModDoc->GetSoundFile(); const ModSample &sample = sndFile.GetSample((m_nSample <= sndFile.GetNumSamples()) ? m_nSample : 0); + const SmpLength smpScrollPos = std::min(ScrollPosToSamplePos(), sample.nLength); if(sample.uFlags[CHN_ADLIB]) { CModScrollView::OnDraw(pDC); |