From 19aad32cc63c07b60345b45125bfaa856c71cc04 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 21 Sep 2026 16:59:55 +0000 Subject: [PATCH 1/2] Initial plan From 30c9ddb734795af7c5ee67ddd55868afd63af3cf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 21 Sep 2026 17:01:45 +0000 Subject: [PATCH 2/2] Avoid invalid subtitle add/remove paths Co-authored-by: ddennedy <1146683+ddennedy@users.noreply.github.com> --- src/docks/subtitlesdock.cpp | 20 ++++++++++++++------ src/models/subtitlesmodel.cpp | 1 + 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/docks/subtitlesdock.cpp b/src/docks/subtitlesdock.cpp index 63142620a9..3a889327a8 100644 --- a/src/docks/subtitlesdock.cpp +++ b/src/docks/subtitlesdock.cpp @@ -773,23 +773,31 @@ void SubtitlesDock::onCreateOrEditRequested() void SubtitlesDock::onAddRequested() { LOG_DEBUG(); - ensureTrackExists(); int64_t msTime = positionToMs(m_pos); int trackIndex = m_trackCombo->currentIndex(); - if (m_model->itemIndexAtTime(trackIndex, msTime) >= 0) { + if (trackIndex >= 0 && m_model->itemIndexAtTime(trackIndex, msTime) >= 0) { MAIN.showStatusMessage(tr("A subtitle already exists at this time.")); return; } int64_t maxTime = m_model->maxTime(); - int nextIndex = m_model->itemIndexAfterTime(trackIndex, msTime); - if (nextIndex > -1) { - auto nextItem = m_model->getItem(trackIndex, nextIndex); - maxTime = nextItem.start; + if (trackIndex >= 0) { + int nextIndex = m_model->itemIndexAfterTime(trackIndex, msTime); + if (nextIndex > -1) { + auto nextItem = m_model->getItem(trackIndex, nextIndex); + maxTime = nextItem.start; + } } if ((maxTime - msTime) < 500) { MAIN.showStatusMessage(tr("Not enough space to add subtitle.")); return; } + if (trackIndex < 0) { + ensureTrackExists(); + trackIndex = m_trackCombo->currentIndex(); + if (trackIndex < 0) { + return; + } + } Subtitles::SubtitleItem item; item.start = msTime; item.end = msTime + DEFAULT_ITEM_DURATION; diff --git a/src/models/subtitlesmodel.cpp b/src/models/subtitlesmodel.cpp index 9e23dec72e..cf729c091d 100644 --- a/src/models/subtitlesmodel.cpp +++ b/src/models/subtitlesmodel.cpp @@ -594,6 +594,7 @@ void SubtitlesModel::doRemoveTrack(int trackIndex) LOG_DEBUG() << trackIndex; if (trackIndex < 0 || trackIndex >= m_tracks.size()) { LOG_ERROR() << "Invalid index" << trackIndex; + return; } beginRemoveRows(QModelIndex(), trackIndex, trackIndex); m_tracks.remove(trackIndex);