From 1bf81f84a011d477af333f93e91aef81d18c32f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Sat, 19 Aug 2023 20:51:37 +0200 Subject: [PATCH] LibAudio: Perform all seekpoint binary searches with comparisons One was missed in the previous fix --- Userland/Libraries/LibAudio/GenericTypes.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibAudio/GenericTypes.cpp b/Userland/Libraries/LibAudio/GenericTypes.cpp index e40c04eb3a..6575624a67 100644 --- a/Userland/Libraries/LibAudio/GenericTypes.cpp +++ b/Userland/Libraries/LibAudio/GenericTypes.cpp @@ -51,7 +51,12 @@ Optional SeekTable::seek_point_sample_distance_around(u64 sample_index) con return {}; size_t nearby_seek_point_index = 0; AK::binary_search(m_seek_points, sample_index, &nearby_seek_point_index, [](auto const& sample_index, auto const& seekpoint_candidate) { - return static_cast(sample_index) - static_cast(seekpoint_candidate.sample_index); + // Subtraction with i64 cast may cause overflow. + if (sample_index > seekpoint_candidate.sample_index) + return 1; + if (sample_index == seekpoint_candidate.sample_index) + return 0; + return -1; }); while (nearby_seek_point_index < m_seek_points.size() && m_seek_points[nearby_seek_point_index].sample_index <= sample_index)