mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-27 07:56:14 +01:00
giowin32: use gint64 and _lseeki64
off_t on windows is 32bit which means that it will not be able to handle big offsets
This commit is contained in:
parent
cc2b28b68c
commit
08017c0d6c
@ -1291,8 +1291,7 @@ g_io_win32_fd_seek (GIOChannel *channel,
|
|||||||
{
|
{
|
||||||
GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
|
GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
|
||||||
int whence, errsv;
|
int whence, errsv;
|
||||||
off_t tmp_offset;
|
gint64 result;
|
||||||
off_t result;
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@ -1311,16 +1310,7 @@ g_io_win32_fd_seek (GIOChannel *channel,
|
|||||||
g_abort ();
|
g_abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_offset = offset;
|
result = _lseeki64 (win32_channel->fd, offset, whence);
|
||||||
if (tmp_offset != offset)
|
|
||||||
{
|
|
||||||
g_set_error_literal (err, G_IO_CHANNEL_ERROR,
|
|
||||||
g_io_channel_error_from_errno (EINVAL),
|
|
||||||
g_strerror (EINVAL));
|
|
||||||
return G_IO_STATUS_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = lseek (win32_channel->fd, tmp_offset, whence);
|
|
||||||
errsv = errno;
|
errsv = errno;
|
||||||
|
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user