SF.net SVN: geany:[5453] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Tue Nov 30 18:18:24 UTC 2010


Revision: 5453
          http://geany.svn.sourceforge.net/geany/?rev=5453&view=rev
Author:   ntrel
Date:     2010-11-30 18:18:24 +0000 (Tue, 30 Nov 2010)

Log Message:
-----------
Check result of fclose() for utils_write_file().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/utils.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-11-30 18:12:15 UTC (rev 5452)
+++ trunk/ChangeLog	2010-11-30 18:18:24 UTC (rev 5453)
@@ -1,3 +1,9 @@
+2010-11-30  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/utils.c:
+   Check result of fclose() for utils_write_file().
+
+
 2010-11-28  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * win32-config.h:

Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c	2010-11-30 18:12:15 UTC (rev 5452)
+++ trunk/src/utils.c	2010-11-30 18:18:24 UTC (rev 5453)
@@ -246,30 +246,35 @@
 	{
 		FILE *fp;
 		gint bytes_written, len;
+		gboolean fail = FALSE;
 
 		if (filename == NULL)
 			return ENOENT;
 
 		len = strlen(text);
+		errno = 0;
 		fp = g_fopen(filename, "w");
-		if (fp != NULL)
+		if (fp == NULL)
+			fail = TRUE;
+		else
 		{
-			bytes_written = fwrite(text, sizeof (gchar), len, fp);
-			fclose(fp);
+			bytes_written = fwrite(text, sizeof(gchar), len, fp);
 
 			if (len != bytes_written)
 			{
+				fail = TRUE;
 				geany_debug(
 					"utils_write_file(): written only %d bytes, had to write %d bytes to %s",
 					bytes_written, len, filename);
-				return EIO;
 			}
+			if (fclose(fp) != 0)
+				fail = TRUE;
 		}
-		else
+		if (fail)
 		{
 			geany_debug("utils_write_file(): could not write to file %s (%s)",
 				filename, g_strerror(errno));
-			return errno;
+			return NVL(errno, EIO);
 		}
 	}
 	return 0;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list