- return G_POLLABLE_OUTPUT_STREAM_GET_INTERFACE (stream)->
- write_nonblocking (stream, buffer, size, error);
+ if (count == 0)
+ return 0;
+
+ if (((gssize) count) < 0)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ _("Too large count value passed to %s"), G_STRFUNC);
+ return -1;
+ }
+
+ if (cancellable)
+ g_cancellable_push_current (cancellable);
+
+ res = G_POLLABLE_OUTPUT_STREAM_GET_INTERFACE (stream)->
+ write_nonblocking (stream, buffer, count, error);
+
+ if (cancellable)
+ g_cancellable_pop_current (cancellable);
+
+ return res;