From 3458846794cc2cb002c46b5824819daed3e4db8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Fri, 24 Jan 2025 19:10:48 -0500
Subject: [PATCH] fseek() after ftruncate()

Ensure the stream is in a meaningful place.
Fixes a bug, but one we're unlikely to have ever seen the way we use
this.
---
 src/xpdev/ini_file.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index e0aeab8459..026bbcb857 100644
--- a/src/xpdev/ini_file.c
+++ b/src/xpdev/ini_file.c
@@ -2909,8 +2909,11 @@ bool iniWriteFile(FILE* fp, const str_list_t list)
 	pos = ftell(fp);
 	if (pos == -1)
 		return false;
-	if (chsize(fileno(fp), pos) != 0)  /* truncate */
+	if (chsize(fileno(fp), pos) != 0) {  /* truncate */
+		fseek(fp, 0, SEEK_END);
 		return false;
+	}
+	fseek(fp, 0, SEEK_END);
 
 	return count == strListCount(list);
 }
-- 
GitLab