do not leak the output stream.
authorPaolo Borelli <pborelli@katamail.com>
Tue, 10 Jun 2008 11:40:45 +0000 (11:40 +0000)
committerPaolo Borelli <pborelli@src.gnome.org>
Tue, 10 Jun 2008 11:40:45 +0000 (11:40 +0000)
2008-06-10  Paolo Borelli  <pborelli@katamail.com>

* gfile.c (g_file_replace_contents): do not leak the output stream.

svn path=/trunk/; revision=6984

gio/ChangeLog
gio/gfile.c

index a5e3f66..64ec212 100644 (file)
@@ -1,3 +1,7 @@
+2008-06-10  Paolo Borelli  <pborelli@katamail.com>
+
+       * gfile.c (g_file_replace_contents): do not leak the output stream.
+
 2008-06-10  Michael Natterer  <mitch@imendio.com>
 
        * gcontenttype.c (g_content_type_get_icon): fix SEGV by not using
index 941fa81..a4cbd9b 100644 (file)
@@ -5411,6 +5411,7 @@ g_file_replace_contents (GFile             *file,
   GFileOutputStream *out;
   gsize pos, remainder;
   gssize res;
+  gboolean ret;
 
   g_return_val_if_fail (G_IS_FILE (file), FALSE);
   g_return_val_if_fail (contents != NULL, FALSE);
@@ -5436,18 +5437,19 @@ g_file_replace_contents (GFile             *file,
     {
       /* Ignore errors on close */
       g_output_stream_close (G_OUTPUT_STREAM (out), cancellable, NULL);
-      
+      g_object_unref (out);
+
       /* error is set already */
       return FALSE;
     }
   
-  if (!g_output_stream_close (G_OUTPUT_STREAM (out), cancellable, error))
-    return FALSE;
+  ret = g_output_stream_close (G_OUTPUT_STREAM (out), cancellable, error);
+  g_object_unref (out);
 
   if (new_etag)
     *new_etag = g_file_output_stream_get_etag (out);
-  
-  return TRUE;
+
+  return ret;
 }
 
 typedef struct {