diff --git a/src/os/core/os_core.c b/src/os/core/os_core.c index 04ede12a..670f8486 100644 --- a/src/os/core/os_core.c +++ b/src/os/core/os_core.c @@ -80,7 +80,6 @@ os_write_data_list_to_file_path(String8 path, String8List list) U64 write_buffer_write_pos = 0; U64 write_buffer_read_pos = 0; U64 file_off = 0; - U64 total_bytes_written = 0; { for(String8Node *n = list.first; n != 0; n = n->next) { @@ -90,7 +89,11 @@ os_write_data_list_to_file_path(String8 path, String8List list) U64 write_buffer_available_size = (write_buffer_size - write_buffer_unconsumed_size); if(write_buffer_available_size == 0) { - os_file_write(file, r1u64(file_off, file_off+write_buffer_size), write_buffer); + U64 file_write_size = os_file_write(file, r1u64(file_off, file_off+write_buffer_size), write_buffer); + if(file_write_size != write_buffer_size) + { + goto dbl_break; + } file_off += write_buffer_size; write_buffer_read_pos += write_buffer_size; } @@ -104,10 +107,12 @@ os_write_data_list_to_file_path(String8 path, String8List list) } if(write_buffer_write_pos > write_buffer_read_pos) { - total_bytes_written += os_file_write(file, r1u64(file_off, file_off + (write_buffer_write_pos-write_buffer_read_pos)), write_buffer); + U64 file_write_size = os_file_write(file, r1u64(file_off, file_off + (write_buffer_write_pos-write_buffer_read_pos)), write_buffer); + file_off += file_write_size; } } - good = (total_bytes_written == list.total_size); + dbl_break:; + good = (file_off == list.total_size); os_file_close(file); scratch_end(scratch); }