From 01b770e5f171a440f01cb9a9b2d974e9c8c82690 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 25 Nov 2023 04:10:04 +0100 Subject: a --- serialize/world-reader.cpp | 3 +-- serialize/world-writer.cpp | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) (limited to 'serialize') diff --git a/serialize/world-reader.cpp b/serialize/world-reader.cpp index 555785ff..ec8b733a 100644 --- a/serialize/world-reader.cpp +++ b/serialize/world-reader.cpp @@ -11,6 +11,7 @@ #include "src/anim-atlas.hpp" #include "src/chunk-scenery.hpp" #include "compat/strerror.hpp" +#include #include #include @@ -473,9 +474,7 @@ world world::deserialize(StringView filename) fm_soft_assert(filename.flags() & StringViewFlag::NullTerminated); FILE_raii f = ::fopen(filename.data(), "rb"); if (!f) - { fm_throw("fopen(\"{}\", \"r\"): {}"_cf, filename, get_error_string(errbuf)); - } if (int ret = ::fseek(f, 0, SEEK_END); ret != 0) fm_throw("fseek(SEEK_END): {}"_cf, get_error_string(errbuf)); size_t len; diff --git a/serialize/world-writer.cpp b/serialize/world-writer.cpp index 9fb65e3d..c41fa89d 100644 --- a/serialize/world-writer.cpp +++ b/serialize/world-writer.cpp @@ -14,8 +14,9 @@ #include "src/anim-atlas.hpp" #include "src/light.hpp" #include "compat/strerror.hpp" -#include +#include #include +#include #include #include #include @@ -630,13 +631,22 @@ void world::serialize(StringView filename) Path::remove(filename); FILE_raii file = ::fopen(filename.data(), "wb"); if (!file) - fm_abort("fopen(\"%s\", \"w\"): %s", filename.data(), get_error_string(errbuf).data()); + { + int error = errno; + fm_abort("fopen(\"%s\", \"w\"): %s", filename.data(), get_error_string(errbuf, error).data()); + } writer_state s{*this}; const auto array = s.serialize_world(); if (auto len = ::fwrite(array.data(), array.size(), 1, file); len != 1) - fm_abort("fwrite: %s", get_error_string(errbuf).data()); + { + int error = errno; + fm_abort("fwrite: %s", get_error_string(errbuf, error).data()); + } if (int ret = ::fflush(file); ret != 0) - fm_abort("fflush: %s", get_error_string(errbuf).data()); + { + int error = errno; + fm_abort("fflush: %s", get_error_string(errbuf, error).data()); + } } } // namespace floormat -- cgit v1.2.3