gtk+ r19380 - trunk/gdk-pixbuf



Author: matthiasc
Date: Wed Jan 16 17:38:13 2008
New Revision: 19380
URL: http://svn.gnome.org/viewvc/gtk+?rev=19380&view=rev

Log:
2008-01-15  Matthias Clasen  <mclasne redhat com>

        * gdk-pixbuf-io.c (save_to_stream): Handle partial writes.




Modified:
   trunk/gdk-pixbuf/ChangeLog
   trunk/gdk-pixbuf/gdk-pixbuf-io.c

Modified: trunk/gdk-pixbuf/gdk-pixbuf-io.c
==============================================================================
--- trunk/gdk-pixbuf/gdk-pixbuf-io.c	(original)
+++ trunk/gdk-pixbuf/gdk-pixbuf-io.c	Wed Jan 16 17:38:13 2008
@@ -2218,24 +2218,32 @@
 		gpointer      data)
 {
 	SaveToStreamData *sdata = (SaveToStreamData *)data;
+	gsize remaining;
+	gssize written;
         GError *my_error = NULL;
-	gsize n;
 
-	n = g_output_stream_write (sdata->stream, 
-                                   buffer, count, 
-                                   sdata->cancellable, 
-                                   &my_error);
-	if (n != count) {
-		if (!my_error) {
-                        g_set_error (error,
-                                     G_IO_ERROR, 0,
-                                     _("Error writing to image stream"));
-                }
-                else {
-                        g_propagate_error (error, my_error);
-                }
-                return FALSE;
+	remaining = count;
+	written = 0;
+	while (remaining > 0) {
+		buffer += written;
+		remaining -= written;
+		written = g_output_stream_write (sdata->stream, 
+						 buffer, remaining, 
+						 sdata->cancellable, 
+                                   		 &my_error);
+		if (written < 0) {
+			if (!my_error) {
+                        	g_set_error (error,
+                                     	     G_IO_ERROR, 0,
+                                     	     _("Error writing to image stream"));
+                	}
+                	else {
+                        	g_propagate_error (error, my_error);
+                	}
+                	return FALSE;
+		}
 	}
+
 	return TRUE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]