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; }