From 388fd9b0f8da1ca962bb00aca6f053e7c7bfbb9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Walenciak?= Date: Sat, 9 Sep 2017 10:16:47 +0200 Subject: [PATCH] fix for interpretation of dir's entry data --- bigtiff/parse.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bigtiff/parse.cpp b/bigtiff/parse.cpp index 8a948f43..8a62b076 100644 --- a/bigtiff/parse.cpp +++ b/bigtiff/parse.cpp @@ -230,12 +230,12 @@ static const char* typeName(uint16_t tag) return result; } -typedef struct { +struct field_t { uint16_t tagID; uint16_t tagType; uint64_t count; uint64_t data; -} field_t; +} __attribute__((packed)); void printIFD(Exiv2::BasicIo& io, std::ostream& out, Exiv2::PrintStructureOption option, uint32_t offset, bool bSwap, int depth) { @@ -278,10 +278,10 @@ void printIFD(Exiv2::BasicIo& io, std::ostream& out, Exiv2::PrintStructureOption field_t field; io.read(reinterpret_cast(&field), sizeof(field)); - const uint16_t tag = conditional_byte_swap_4_array<16>(&field.tagID, 0, bSwap); - const uint16_t type = conditional_byte_swap_4_array<16>(&field.tagType, 2, bSwap); - const uint64_t count = conditional_byte_swap_4_array<64>(&field.count, 4, bSwap); - const uint64_t data = conditional_byte_swap_4_array<64>(&field.data, 12, bSwap); + const uint16_t tag = conditional_byte_swap<16>(field.tagID, bSwap); + const uint16_t type = conditional_byte_swap<16>(field.tagType, bSwap); + const uint64_t count = conditional_byte_swap<64>(field.count, bSwap); + const uint64_t data = conditional_byte_swap<64>(field.data, bSwap); std::string sp = "" ; // output spacer