Fix a crash in WinEnvIO::GetSectorSize (#3975)

Summary:
Fix a crash in `WinEnvIO::GetSectorSize` that happens on old Windows systems (e.g Windows 7).
On old Windows systems that don't support querying StorageAccessAlignmentProperty using IOCTL_STORAGE_QUERY_PROPERTY, the flow calls a different DeviceIoControl with nullptr as lpBytesReturned.
When the code reaches this point, we get an access violation.
Closes https://github.com/facebook/rocksdb/pull/3975

Differential Revision: D8385186

Pulled By: ajkr

fbshipit-source-id: fae4c9b4b0a52c8a10182e1b35bcaa30dc393bbb
This commit is contained in:
shpala 2018-06-12 13:36:05 -07:00 committed by Facebook Github Bot
parent 3593275357
commit 9c7da963bc

View File

@ -1097,7 +1097,7 @@ size_t WinEnvIO::GetSectorSize(const std::string& fname) {
DISK_GEOMETRY_EX geometry = { 0 };
ret = DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY,
nullptr, 0, &geometry, sizeof(geometry), nullptr, nullptr);
nullptr, 0, &geometry, sizeof(geometry), &output_bytes, nullptr);
if (ret) {
sector_size = geometry.Geometry.BytesPerSector;
}