From 94ee8515c33b74b2422274213e1be81ff5e8adb9 Mon Sep 17 00:00:00 2001 From: korenkonder Date: Thu, 1 Feb 2024 00:57:00 +0300 Subject: [PATCH] Fixed writing of obj_db --- src/KKdLib/database/object.cpp | 2 +- src/KKdLib/io/file_stream.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/KKdLib/database/object.cpp b/src/KKdLib/database/object.cpp index d7e19302..0f4712f0 100644 --- a/src/KKdLib/database/object.cpp +++ b/src/KKdLib/database/object.cpp @@ -576,7 +576,7 @@ static void object_database_file_classic_write_inner(object_database_file* obj_d int64_t object_sets_offset = 0; size_t off_idx = 0; int64_t objects_offset = 0; - if (string_offsets.size()) { + if (object_set_count) { for (object_set_info_file& i : obj_db->object_set) { string_offsets.push_back(s.get_position()); s.write_string_null_terminated(i.name); diff --git a/src/KKdLib/io/file_stream.cpp b/src/KKdLib/io/file_stream.cpp index 6fac13d7..158ed380 100644 --- a/src/KKdLib/io/file_stream.cpp +++ b/src/KKdLib/io/file_stream.cpp @@ -101,7 +101,10 @@ size_t file_stream::write(const void* buf, size_t count) { int64_t act_count = 0; while (count > 0) { act_count += fwrite(this->buf, 1, min_def(count, sizeof(this->buf)), stream); - count -= sizeof(this->buf); + if (count > sizeof(this->buf)) + count -= sizeof(this->buf); + else + break; } return act_count; } @@ -115,7 +118,10 @@ size_t file_stream::write(const void* buf, size_t size, size_t count) { int64_t act_count = 0; while (count > 0) { act_count += fwrite(this->buf, 1, min_def(count, sizeof(this->buf) / size), stream); - count -= sizeof(this->buf) / size; + if (count > sizeof(this->buf) / size) + count -= sizeof(this->buf) / size; + else + break; } return act_count; }