Commit 723b58d6 for libheif

commit 723b58d6ca329b2743822951aeaf3299c7410448
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Fri Mar 13 23:39:33 2026 +0100

    fix infinite loop for sequences with variable frame-rate

diff --git a/libheif/api/libheif/heif_uncompressed.h b/libheif/api/libheif/heif_uncompressed.h
index fcc0cfb8..966c5b59 100644
--- a/libheif/api/libheif/heif_uncompressed.h
+++ b/libheif/api/libheif/heif_uncompressed.h
@@ -307,6 +307,10 @@ int heif_image_get_component_bits_per_pixel(const heif_image*, uint32_t componen
 LIBHEIF_API
 uint16_t heif_image_get_component_type(const heif_image*, uint32_t component_idx);

+// TODO
+//LIBHEIF_API
+//heif_error heif_image_get_component_indices_of_interleaved_channel(const heif_image* image, uint32_t* component_indices, uint8_t* nComponents_in_out);
+
 LIBHEIF_API
 heif_error heif_image_add_component(heif_image* image,
                                     int width, int height,
diff --git a/libheif/sequences/seq_boxes.cc b/libheif/sequences/seq_boxes.cc
index 3ae0dba3..34774f52 100644
--- a/libheif/sequences/seq_boxes.cc
+++ b/libheif/sequences/seq_boxes.cc
@@ -621,14 +621,11 @@ Error Box_stts::write(StreamWriter& writer) const

 uint32_t Box_stts::get_sample_duration(uint32_t sample_idx)
 {
-  size_t i = 0;
-  while (i < m_entries.size()) {
-    if (sample_idx < m_entries[i].sample_count) {
-      return m_entries[i].sample_delta;
-    }
-    else {
-      sample_idx -= m_entries[i].sample_count;
+  for (const auto& entry : m_entries) {
+    if (sample_idx < entry.sample_count) {
+      return entry.sample_delta;
     }
+    sample_idx -= entry.sample_count;
   }

   return 0;
@@ -813,14 +810,11 @@ Error Box_ctts::write(StreamWriter& writer) const

 int32_t Box_ctts::get_sample_offset(uint32_t sample_idx)
 {
-  size_t i = 0;
-  while (i < m_entries.size()) {
-    if (sample_idx < m_entries[i].sample_count) {
-      return m_entries[i].sample_offset;
-    }
-    else {
-      sample_idx -= m_entries[i].sample_count;
+  for (const auto& entry : m_entries) {
+    if (sample_idx < entry.sample_count) {
+      return entry.sample_offset;
     }
+    sample_idx -= entry.sample_count;
   }

   return 0;