From 842b97dcb65332e81b9ce1023e68304e0b0cd2b8 Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Tue, 23 Dec 2025 00:46:33 +0100 Subject: [PATCH] Fix NPE while sorting --- .../impl/SubtitleTrackComparator.java | 5 +++-- .../impl/SubtitleTrackComparatorTest.java | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparator.java index 46c8330..9cb0da9 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparator.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparator.java @@ -1,6 +1,7 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.TrackAttributes; +import org.apache.logging.log4j.util.Strings; import java.util.Collection; import java.util.Comparator; @@ -23,8 +24,8 @@ public class SubtitleTrackComparator implements Comparator { public int compare(TrackAttributes track1, TrackAttributes track2) { int result = 0; - String track1Name = track1.trackName().toLowerCase(); - String track2Name = track2.trackName().toLowerCase(); + String track1Name = Strings.isNotBlank(track1.trackName()) ? track1.trackName().toLowerCase() : ""; + String track2Name = Strings.isNotBlank(track2.trackName()) ? track2.trackName().toLowerCase() : ""; if (preferredSubtitles.contains(track1Name)) result++; else for (String keyword: preferredSubtitles) if (track1Name.contains(keyword)) result++; diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparatorTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparatorTest.java index 2928abb..879ebde 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparatorTest.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/SubtitleTrackComparatorTest.java @@ -31,7 +31,13 @@ class SubtitleTrackComparatorTest { Arguments.of(attr("pref", true), attr("pref", true), 0), Arguments.of(attr("pref"), attr("pref", true), 1), Arguments.of(attr("", true), attr("pref"), -2), - Arguments.of(attr("pref"), attr("", true), 2) + Arguments.of(attr("pref"), attr("", true), 2), + + Arguments.of(attr(null), attr(null), 0), + Arguments.of(attr(null), attr(""), 0), + Arguments.of(attr(null), attr("pref"), -1), + Arguments.of(attr(""), attr(null), 0), + Arguments.of(attr("pref"), attr(null), 1) ); }