diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index 54a7bd4120f409fb7aa4bff608c9c787326fc8f7..61864e4adbed4ddadc80b1facfab667509c01a59 100644
--- a/src/xpdev/ini_file.c
+++ b/src/xpdev/ini_file.c
@@ -2361,11 +2361,10 @@ BOOL DLLCALL iniWriteFile(FILE* fp, const str_list_t list)
 	size_t		count;
 
 	rewind(fp);
-
-	if(chsize(fileno(fp),0)!=0)	/* truncate */
-		return(FALSE);
-
 	count = strListWriteFile(fp,list,"\n");
+	fflush(fp);
+	if(chsize(fileno(fp), ftell(fp))!=0)	/* truncate */
+		return(FALSE);
 
 	return(count == strListCount(list));
 }