mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16:17 +01:00
win32: handle ERROR_MORE_DATA
If a named pipe is being read in message mode and the next message is longer than the nNumberOfBytesToRead parameter specifies, ReadFile returns FALSE and GetLastError returns ERROR_MORE_DATA. Since the API doesn't allow to return both a GError and the number of bytes read so far, it makes more sense to return nread, and let the client call GetLastError() himself to check if ERROR_MORE_DATA. The current alternative loses the nread information. https://bugzilla.gnome.org/show_bug.cgi?id=679288
This commit is contained in:
parent
23d80a04da
commit
4b5d762d5d
@ -326,8 +326,17 @@ g_win32_input_stream_read (GInputStream *stream,
|
|||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
errsv = GetLastError ();
|
errsv = GetLastError ();
|
||||||
if (errsv == ERROR_HANDLE_EOF ||
|
if (errsv == ERROR_MORE_DATA)
|
||||||
errsv == ERROR_BROKEN_PIPE)
|
{
|
||||||
|
/* If a named pipe is being read in message mode and the
|
||||||
|
* next message is longer than the nNumberOfBytesToRead
|
||||||
|
* parameter specifies, ReadFile returns FALSE and
|
||||||
|
* GetLastError returns ERROR_MORE_DATA */
|
||||||
|
retval = nread;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
else if (errsv == ERROR_HANDLE_EOF ||
|
||||||
|
errsv == ERROR_BROKEN_PIPE)
|
||||||
{
|
{
|
||||||
/* TODO: the other end of a pipe may call the WriteFile
|
/* TODO: the other end of a pipe may call the WriteFile
|
||||||
* function with nNumberOfBytesToWrite set to zero. In this
|
* function with nNumberOfBytesToWrite set to zero. In this
|
||||||
|
Loading…
Reference in New Issue
Block a user