SF.net SVN: geany:[5391] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Wed Nov 10 13:44:10 UTC 2010


Revision: 5391
          http://geany.svn.sourceforge.net/geany/?rev=5391&view=rev
Author:   ntrel
Date:     2010-11-10 13:44:10 +0000 (Wed, 10 Nov 2010)

Log Message:
-----------
Fix not reporting an error message when saving a document fails.
Check result of fclose().

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-11-10 13:13:28 UTC (rev 5390)
+++ trunk/ChangeLog	2010-11-10 13:44:10 UTC (rev 5391)
@@ -4,6 +4,9 @@
    Use LF line endings for templates internally instead of default
    pref because the default can change. This fixes missing line
    endings sometimes when changing default setting.
+ * src/document.c:
+   Fix not reporting an error message when saving a document fails.
+   Check result of fclose().
 
 
 2010-11-09  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c	2010-11-10 13:13:28 UTC (rev 5390)
+++ trunk/src/document.c	2010-11-10 13:44:10 UTC (rev 5391)
@@ -1725,24 +1725,31 @@
 			G_FILE_CREATE_NONE, NULL, NULL, &error);
 		g_object_unref(fp);
 #else
-		gint err = 0;
 		FILE *fp;
 		gint bytes_written;
+		gboolean fail = FALSE;
 
 		/* Use POSIX API for unsafe saving (GVFS-unsafe) */
 		fp = g_fopen(locale_filename, "wb");
-		if (G_UNLIKELY(fp == NULL))
-			return g_strdup(g_strerror(errno));
+		if (fp == NULL)
+			fail = TRUE;
+		else
+		{
+			bytes_written = fwrite(data, sizeof(gchar), len, fp);
 
-		bytes_written = fwrite(data, sizeof(gchar), len, fp);
+			if (len != bytes_written)
+				fail = TRUE;
 
-		if (G_UNLIKELY(len != bytes_written))
-			err = errno;
-
-		fclose(fp);
-
-		if (err != 0)
+			if (fclose(fp) != 0)
+				fail = TRUE;
+		}
+		if (fail)
+		{
+			gint err = errno;
+			if (!err)
+				err = EIO;
 			return g_strdup(g_strerror(err));
+		}
 #endif
 	}
 	else


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