Implement fhandler_dev_null::write to workaround a problem with NUL

Windows NUL device returns only the lower 32 bit of the number of
bytes written.  Implement a fake write function to ignore the underlying
NUL device.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2017-03-12 12:17:43 +01:00
parent a3f297d3c2
commit dd757cc43a
2 changed files with 11 additions and 0 deletions

View File

@ -1529,6 +1529,15 @@ fhandler_dev_null::fhandler_dev_null () :
{
}
ssize_t __stdcall
fhandler_dev_null::write (const void *ptr, size_t len)
{
/* Shortcut. This also fixes a problem with the NUL device on 64 bit:
If you write > 4 GB in a single attempt, the bytes written returned
from by is numBytes & 0xffffffff. */
return len;
}
void
fhandler_base::set_no_inheritance (HANDLE &h, bool not_inheriting)
{

View File

@ -1682,6 +1682,8 @@ class fhandler_dev_null: public fhandler_base
copyto (fh);
return fh;
}
ssize_t __stdcall write (const void *ptr, size_t len);
};
class fhandler_dev_zero: public fhandler_base