瀏覽代碼

LibAudio: Don't return a seek point if it is after the desired sample

If the seek table was incomplete, without any seek points available
before the target point, `SeekTable::seek_point_before()` would instead
return the first seek point after the target. Check whether the seek
point is before the target before returning it.
Zaggy1024 2 年之前
父節點
當前提交
a8dc97d95d
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      Userland/Libraries/LibAudio/GenericTypes.cpp

+ 2 - 0
Userland/Libraries/LibAudio/GenericTypes.cpp

@@ -40,6 +40,8 @@ Optional<SeekPoint const&> SeekTable::seek_point_before(u64 sample_index) const
         ++nearby_seek_point_index;
     while (nearby_seek_point_index > 0 && m_seek_points[nearby_seek_point_index].sample_index > sample_index)
         --nearby_seek_point_index;
+    if (m_seek_points[nearby_seek_point_index].sample_index > sample_index)
+        return {};
     return m_seek_points[nearby_seek_point_index];
 }