From 1873ff6168c67be92851ff9b285e0eeee19401f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=3D=3FUTF-8=3Fq=3FM=3DC3=3DA4rt=3D20Laak=3F=3D?= Date: Wed, 22 Sep 2021 12:03:28 +0300 Subject: [PATCH] windows: fix _lws_plat_file_seek_cur to update pos in fd * needed to make fops_zip to work in windows --- lib/plat/windows/windows-file.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/plat/windows/windows-file.c b/lib/plat/windows/windows-file.c index 5e2625ad9..d768b284d 100644 --- a/lib/plat/windows/windows-file.c +++ b/lib/plat/windows/windows-file.c @@ -92,7 +92,23 @@ _lws_plat_file_seek_cur(lws_fop_fd_t fop_fd, lws_fileofs_t offset) LARGE_INTEGER l; l.QuadPart = offset; - return SetFilePointerEx((HANDLE)fop_fd->fd, l, NULL, FILE_CURRENT); + if (!SetFilePointerEx((HANDLE)fop_fd->fd, l, NULL, FILE_CURRENT)) + { + lwsl_err("error seeking from cur %ld, offset %ld\n", (long)fop_fd->pos, (long)offset); + return -1; + } + + LARGE_INTEGER zero; + zero.QuadPart = 0; + LARGE_INTEGER newPos; + if (!SetFilePointerEx((HANDLE)fop_fd->fd, zero, &newPos, FILE_CURRENT)) + { + lwsl_err("error seeking from cur %ld, offset %ld\n", (long)fop_fd->pos, (long)offset); + return -1; + } + fop_fd->pos = newPos.QuadPart; + + return newPos.QuadPart; } int