diff --git a/Userland/Libraries/LibArchive/Tar.h b/Userland/Libraries/LibArchive/Tar.h index 8cb1c18c14..86ad43059f 100644 --- a/Userland/Libraries/LibArchive/Tar.h +++ b/Userland/Libraries/LibArchive/Tar.h @@ -155,3 +155,8 @@ private: }; } + +template<> +struct AK::Traits : public AK::GenericTraits { + static constexpr bool is_trivially_serializable() { return true; } +}; diff --git a/Userland/Libraries/LibArchive/TarStream.cpp b/Userland/Libraries/LibArchive/TarStream.cpp index f876dd1cab..dc4cf8ef26 100644 --- a/Userland/Libraries/LibArchive/TarStream.cpp +++ b/Userland/Libraries/LibArchive/TarStream.cpp @@ -92,10 +92,7 @@ ErrorOr TarInputStream::load_next_header() { size_t number_of_consecutive_zero_blocks = 0; while (true) { - // FIXME: This should read the entire span. - auto header_span = TRY(m_stream->read_some(Bytes(&m_header, sizeof(m_header)))); - if (header_span.size() != sizeof(m_header)) - return Error::from_string_literal("Failed to read the entire header"); + m_header = TRY(m_stream->read_value()); // Discard the rest of the header block. TRY(m_stream->discard(block_size - sizeof(TarFileHeader)));