From 26d8e0d4eda7a7f1231945820c254f0fa44d575e Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Thu, 22 Aug 2024 19:35:42 +0200 Subject: [PATCH] refactor(metadata_types): improve diagnostics --- src/reader/internal/metadata_types.cpp | 30 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/reader/internal/metadata_types.cpp b/src/reader/internal/metadata_types.cpp index c92108e5..253a9440 100644 --- a/src/reader/internal/metadata_types.cpp +++ b/src/reader/internal/metadata_types.cpp @@ -767,16 +767,24 @@ auto dir_entry_view_impl::make_dir_entry_view(uint32_t self_index, auto& meta = g.meta(); if (auto de = meta.dir_entries()) { - DWARFS_CHECK(self_index < de->size(), "self_index out of range"); - DWARFS_CHECK(parent_index < de->size(), "parent_index out of range"); + DWARFS_CHECK(self_index < de->size(), + fmt::format("self_index out of range: {0} >= {1}", self_index, + de->size())); + DWARFS_CHECK(parent_index < de->size(), + fmt::format("parent_index out of range: {0} >= {1}", + parent_index, de->size())); auto dev = (*de)[self_index]; return Ctor()(dev, self_index, parent_index, g); } - DWARFS_CHECK(self_index < meta.inodes().size(), "self_index out of range"); - DWARFS_CHECK(parent_index < meta.inodes().size(), "self_index out of range"); + DWARFS_CHECK(self_index < meta.inodes().size(), + fmt::format("self_index out of range: {0} >= {1}", self_index, + meta.inodes().size())); + DWARFS_CHECK(parent_index < meta.inodes().size(), + fmt::format("parent_index out of range: {0} >= {1}", + parent_index, meta.inodes().size())); auto iv = meta.inodes()[self_index]; @@ -789,19 +797,25 @@ auto dir_entry_view_impl::make_dir_entry_view(uint32_t self_index, auto& meta = g.meta(); if (auto de = meta.dir_entries()) { - DWARFS_CHECK(self_index < de->size(), "self_index out of range"); + DWARFS_CHECK(self_index < de->size(), + fmt::format("self_index out of range: {0} >= {1}", self_index, + de->size())); auto dev = (*de)[self_index]; DWARFS_CHECK(dev.inode_num() < meta.directories().size(), - "self_index inode out of range"); + fmt::format("inode_num out of range: {0} >= {1}", + dev.inode_num(), meta.directories().size())); return Ctor()(dev, self_index, g.parent_dir_entry(dev.inode_num()), g); } - DWARFS_CHECK(self_index < meta.inodes().size(), "self_index out of range"); + DWARFS_CHECK(self_index < meta.inodes().size(), + fmt::format("self_index out of range: {0} >= {1}", self_index, + meta.inodes().size())); auto iv = meta.inodes()[self_index]; DWARFS_CHECK(iv.inode_v2_2() < meta.directories().size(), - "parent_index out of range"); + fmt::format("inode_v2_2 out of range: {0} >= {1}", + iv.inode_v2_2(), meta.directories().size())); return Ctor()( iv, self_index, meta.entry_table_v2_2()[meta.directories()[iv.inode_v2_2()]