Commit a716a66f for libheif
commit a716a66fb643fd30e51584c248e499b548f67c12
Author: Dirk Farin <dirk.farin@gmail.com>
Date: Thu Jan 29 00:33:54 2026 +0100
set item boxes even when metabox handler is not 'pict'
diff --git a/libheif/file.cc b/libheif/file.cc
index 507ea29b..32aa902e 100644
--- a/libheif/file.cc
+++ b/libheif/file.cc
@@ -431,6 +431,26 @@ Error HeifFile::parse_heif_images()
heif_suberror_No_hdlr_box);
}
+ // --- assign item boxes
+
+ m_iinf_box = m_meta_box->get_child_box<Box_iinf>();
+ if (!m_iinf_box) {
+ return Error(heif_error_Invalid_input,
+ heif_suberror_No_iinf_box);
+ }
+
+ std::vector<std::shared_ptr<Box_infe>> infe_boxes = m_iinf_box->get_child_boxes<Box_infe>();
+
+ for (auto& infe_box : infe_boxes) {
+ if (!infe_box) {
+ return Error(heif_error_Invalid_input,
+ heif_suberror_No_infe_box);
+ }
+
+ m_infe_boxes.insert(std::make_pair(infe_box->get_item_ID(), infe_box));
+ }
+
+
if (m_hdlr_box &&
m_hdlr_box->get_handler_type() != fourcc("pict")) {
return {};
@@ -483,28 +503,9 @@ Error HeifFile::parse_heif_images()
}
}
- m_iinf_box = m_meta_box->get_child_box<Box_iinf>();
- if (!m_iinf_box) {
- return Error(heif_error_Invalid_input,
- heif_suberror_No_iinf_box);
- }
-
m_grpl_box = m_meta_box->get_child_box<Box_grpl>();
- // --- build list of images
-
- std::vector<std::shared_ptr<Box_infe>> infe_boxes = m_iinf_box->get_child_boxes<Box_infe>();
-
- for (auto& infe_box : infe_boxes) {
- if (!infe_box) {
- return Error(heif_error_Invalid_input,
- heif_suberror_No_infe_box);
- }
-
- m_infe_boxes.insert(std::make_pair(infe_box->get_item_ID(), infe_box));
- }
-
return Error::Ok;
}