From 9954b8b4f5fb95470e127a4f24a0c73289dd49a9 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 28 Oct 2022 22:47:20 +0200 Subject: a --- serialize/world-reader.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'serialize/world-reader.cpp') diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp index 299386de..4b5d365c 100644 --- a/serialize/world-reader.cpp +++ b/serialize/world-reader.cpp @@ -64,7 +64,7 @@ void reader_state::read_chunks(reader_t& s) for (std::size_t i = 0; i < TILE_COUNT; i++) { const tilemeta flags = s.read(); - const auto make_atlas = [&] -> tile_image { + const auto make_atlas = [&]() -> tile_image { auto atlas = lookup_atlas(s.read()); auto id = s.read(); return { atlas, id }; @@ -120,7 +120,7 @@ world world::deserialize(StringView filename) return buf; }; fm_assert(filename.flags() & StringViewFlag::NullTerminated); - FILE_raii f = ::fopen(filename.data(), "r"); + FILE_raii f = ::fopen(filename.data(), "rb"); if (!f) fm_abort("fopen(\"%s\", \"r\"): %s", filename.data(), strerror(errbuf)); if (int ret = ::fseek(f, 0, SEEK_END); ret != 0) @@ -133,8 +133,9 @@ world world::deserialize(StringView filename) if (int ret = ::fseek(f, 0, SEEK_SET); ret != 0) fm_abort("fseek(SEEK_SET): %s", strerror(errbuf)); auto buf_ = std::make_unique(len); - if (auto ret = ::fread(&buf_[0], len, 1, f); ret != 1) - fm_abort("fread %zu: %s", len, strerror(errbuf)); + + if (auto ret = ::fread(&buf_[0], 1, len, f); ret != len) + fm_abort("fread short read: %s", strerror(errbuf)); world w; Serialize::reader_state s{w}; -- cgit v1.2.3