| Index: base/platform_file_win.cc
|
| diff --git a/base/platform_file_win.cc b/base/platform_file_win.cc
|
| index 2d25d3327c45bcfe53c5059be9b7105d4f2dc85e..6d4440245601bdecfaba17f2bee1feb50b44a078 100644
|
| --- a/base/platform_file_win.cc
|
| +++ b/base/platform_file_win.cc
|
| @@ -90,51 +90,8 @@ PlatformFile CreatePlatformFileUnsafe(const FilePath& name,
|
| if (error) {
|
| if (file != kInvalidPlatformFileValue)
|
| *error = PLATFORM_FILE_OK;
|
| - else {
|
| - DWORD last_error = GetLastError();
|
| - switch (last_error) {
|
| - case ERROR_SHARING_VIOLATION:
|
| - *error = PLATFORM_FILE_ERROR_IN_USE;
|
| - break;
|
| - case ERROR_FILE_EXISTS:
|
| - *error = PLATFORM_FILE_ERROR_EXISTS;
|
| - break;
|
| - case ERROR_FILE_NOT_FOUND:
|
| - case ERROR_PATH_NOT_FOUND:
|
| - *error = PLATFORM_FILE_ERROR_NOT_FOUND;
|
| - break;
|
| - case ERROR_ACCESS_DENIED:
|
| - *error = PLATFORM_FILE_ERROR_ACCESS_DENIED;
|
| - break;
|
| - case ERROR_TOO_MANY_OPEN_FILES:
|
| - *error = PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
|
| - break;
|
| - case ERROR_OUTOFMEMORY:
|
| - case ERROR_NOT_ENOUGH_MEMORY:
|
| - *error = PLATFORM_FILE_ERROR_NO_MEMORY;
|
| - break;
|
| - case ERROR_HANDLE_DISK_FULL:
|
| - case ERROR_DISK_FULL:
|
| - case ERROR_DISK_RESOURCES_EXHAUSTED:
|
| - *error = PLATFORM_FILE_ERROR_NO_SPACE;
|
| - break;
|
| - case ERROR_USER_MAPPED_FILE:
|
| - *error = PLATFORM_FILE_ERROR_INVALID_OPERATION;
|
| - break;
|
| - case ERROR_NOT_READY:
|
| - case ERROR_SECTOR_NOT_FOUND:
|
| - case ERROR_DEV_NOT_EXIST:
|
| - case ERROR_IO_DEVICE:
|
| - case ERROR_FILE_CORRUPT:
|
| - case ERROR_DISK_CORRUPT:
|
| - *error = PLATFORM_FILE_ERROR_IO;
|
| - break;
|
| - default:
|
| - UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownCreateFileErrors",
|
| - last_error);
|
| - *error = PLATFORM_FILE_ERROR_FAILED;
|
| - }
|
| - }
|
| + else
|
| + *error = LastErrorToPlatformFileError(GetLastError());
|
| }
|
|
|
| return file;
|
| @@ -299,4 +256,40 @@ bool GetPlatformFileInfo(PlatformFile file, PlatformFileInfo* info) {
|
| return true;
|
| }
|
|
|
| +PlatformFileError LastErrorToPlatformFileError(DWORD last_error) {
|
| + switch (last_error) {
|
| + case ERROR_SHARING_VIOLATION:
|
| + return PLATFORM_FILE_ERROR_IN_USE;
|
| + case ERROR_FILE_EXISTS:
|
| + return PLATFORM_FILE_ERROR_EXISTS;
|
| + case ERROR_FILE_NOT_FOUND:
|
| + case ERROR_PATH_NOT_FOUND:
|
| + return PLATFORM_FILE_ERROR_NOT_FOUND;
|
| + case ERROR_ACCESS_DENIED:
|
| + return PLATFORM_FILE_ERROR_ACCESS_DENIED;
|
| + case ERROR_TOO_MANY_OPEN_FILES:
|
| + return PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
|
| + case ERROR_OUTOFMEMORY:
|
| + case ERROR_NOT_ENOUGH_MEMORY:
|
| + return PLATFORM_FILE_ERROR_NO_MEMORY;
|
| + case ERROR_HANDLE_DISK_FULL:
|
| + case ERROR_DISK_FULL:
|
| + case ERROR_DISK_RESOURCES_EXHAUSTED:
|
| + return PLATFORM_FILE_ERROR_NO_SPACE;
|
| + case ERROR_USER_MAPPED_FILE:
|
| + return PLATFORM_FILE_ERROR_INVALID_OPERATION;
|
| + case ERROR_NOT_READY:
|
| + case ERROR_SECTOR_NOT_FOUND:
|
| + case ERROR_DEV_NOT_EXIST:
|
| + case ERROR_IO_DEVICE:
|
| + case ERROR_FILE_CORRUPT:
|
| + case ERROR_DISK_CORRUPT:
|
| + return PLATFORM_FILE_ERROR_IO;
|
| + default:
|
| + UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownCreateFileErrors",
|
| + last_error);
|
| + return PLATFORM_FILE_ERROR_FAILED;
|
| + }
|
| +}
|
| +
|
| } // namespace base
|
|
|