From 01394ae39aaf972ad32722e12a801dc56cf03306 Mon Sep 17 00:00:00 2001 From: bumbread Date: Wed, 15 Feb 2023 21:11:22 +1100 Subject: [PATCH] Bug fix --- src/os_win/file.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/os_win/file.c b/src/os_win/file.c index 345cc66..667ec42 100644 --- a/src/os_win/file.c +++ b/src/os_win/file.c @@ -69,7 +69,7 @@ static void _file_untrack(FILE *stream) { // Multithreaded access static inline void _file_lock_init(FILE *stream) { - mtx_init(&stream->lock, mtx_recursive); + mtx_init(&stream->lock, mtx_plain); } static inline void _file_lock_destroy(FILE *stream) { @@ -345,15 +345,17 @@ int fflush(FILE *stream) { _file_lock(stream); int res = 0; FileBuffer *buffer = &stream->buffer; - void *data = buffer->data; - size_t size = buffer->written; - DWORD bytes_written; - BOOL ok = WriteFile(stream->handle, data, size, &bytes_written, NULL); - if(!ok) { - res = EOF; - stream->eof = 1; + if(buffer->written != 0) { + size_t size = buffer->written; + void *data = buffer->data; + DWORD bytes_written; + BOOL ok = WriteFile(stream->handle, data, size, &bytes_written, NULL); + if(!ok) { + res = EOF; + stream->eof = 1; + } + buffer->written = 0; } - buffer->written = 0; _file_unlock(stream); return res; }