aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <egil@erlang.org>2013-02-22 16:42:40 +0100
committerBjörn-Egil Dahlberg <egil@erlang.org>2013-02-22 17:22:45 +0100
commit2c6fc163c4d20f813c692f80ffe401e8bd810496 (patch)
tree30cc2caa573c1621378c549278ec9eba9827f38f
parentc8651ed773be1b8b222338c50f680a3164ce517c (diff)
downloadotp-2c6fc163c4d20f813c692f80ffe401e8bd810496.tar.gz
otp-2c6fc163c4d20f813c692f80ffe401e8bd810496.tar.bz2
otp-2c6fc163c4d20f813c692f80ffe401e8bd810496.zip
erts: Use correct type for ReadFile bytes read
Using a 64bit type for bytes read will not always clear the higher bits.
-rw-r--r--erts/emulator/drivers/common/efile_drv.c2
-rw-r--r--erts/emulator/drivers/win32/win_efile.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/erts/emulator/drivers/common/efile_drv.c b/erts/emulator/drivers/common/efile_drv.c
index 22328fcd11..69acfc9dfd 100644
--- a/erts/emulator/drivers/common/efile_drv.c
+++ b/erts/emulator/drivers/common/efile_drv.c
@@ -1149,7 +1149,7 @@ static void invoke_read_line(void *data)
{
struct t_data *d = (struct t_data *) data;
int status;
- size_t read_size;
+ size_t read_size = 0;
int local_loop = (d->again == 0);
DTRACE_INVOKE_SETUP(FILE_READ_LINE);
diff --git a/erts/emulator/drivers/win32/win_efile.c b/erts/emulator/drivers/win32/win_efile.c
index f2b0c8a843..1059fa5c3a 100644
--- a/erts/emulator/drivers/win32/win_efile.c
+++ b/erts/emulator/drivers/win32/win_efile.c
@@ -1159,8 +1159,11 @@ char* buf; /* Buffer to read into. */
size_t count; /* Number of bytes to read. */
size_t* pBytesRead; /* Where to return number of bytes read. */
{
- if (!ReadFile((HANDLE) fd, buf, count, (DWORD *) pBytesRead, NULL))
+ DWORD nbytes = 0;
+ if (!ReadFile((HANDLE) fd, buf, count, &nbytes, NULL))
return set_error(errInfo);
+
+ *pBytesRead = nbytes;
return 1;
}