diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index e0aeab8459e1d52b7191c118e9fd0efd6a5c0b91..026bbcb85748e51f1fdfb6c1c354966dc54617e8 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);
 }