diff --git a/file_reader b/file_reader index 5cdd4f8..1d37009 160000 --- a/file_reader +++ b/file_reader @@ -1 +1 @@ -Subproject commit 5cdd4f883523520c768a5a387d723a504b4922f8 +Subproject commit 1d370096d9b0767627566191be1e5526a5c90238 diff --git a/src/lily_png.cpp b/src/lily_png.cpp index f09bbf4..46b58d2 100644 --- a/src/lily_png.cpp +++ b/src/lily_png.cpp @@ -9,7 +9,13 @@ static void read_raw_data(const std::string &file_path, file_reader::buffer{0}; + }); + if (res.value() == 0) + throw std::runtime_error("Read failed"); if (memcmp(magic, file_magic, 8) != 0) { std::println("File is not a png!"); @@ -21,7 +27,7 @@ static void read_raw_data(const std::string &file_path, file_reader::buffer> chunk_header; std::get<1>(chunk_header).size = 4; auto ret = reader.read_from_tuple(chunk_header); - if (ret.second == file_reader::READ_FILE_ENDED || ret.second == file_reader::READ_INCOMPLETE) + if (!ret || ret.value() != 8) { std::println("Chunk incomplete!"); return ; @@ -34,7 +40,7 @@ static void read_raw_data(const std::string &file_path, file_reader::buffer, unsigned> dat; std::get<0>(dat).size = std::get<0>(chunk_header); ret = reader.read_from_tuple(dat); - if (ret.second == file_reader::READ_FILE_ENDED || ret.second == file_reader::READ_INCOMPLETE) + if (!ret || ret.value() != raw_data.size + 4) { std::println("Chunk incomplete!"); return ;