aboutsummaryrefslogtreecommitdiff
path: root/src/common/platform/win/Win32FileStream.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-02-03 14:55:17 +0800
committercrupest <crupest@outlook.com>2022-02-03 14:55:17 +0800
commitd15172cfe1ac8558567c1b1c10c2e671b0d1f033 (patch)
tree44eb3f6c760bc4a30786c4716a3c70d2b4b4c28e /src/common/platform/win/Win32FileStream.cpp
parent2cf2f297c00ad262ddcbe56d38fdd45dffb7e342 (diff)
downloadcru-d15172cfe1ac8558567c1b1c10c2e671b0d1f033.tar.gz
cru-d15172cfe1ac8558567c1b1c10c2e671b0d1f033.tar.bz2
cru-d15172cfe1ac8558567c1b1c10c2e671b0d1f033.zip
...
Diffstat (limited to 'src/common/platform/win/Win32FileStream.cpp')
-rw-r--r--src/common/platform/win/Win32FileStream.cpp21
1 files changed, 5 insertions, 16 deletions
diff --git a/src/common/platform/win/Win32FileStream.cpp b/src/common/platform/win/Win32FileStream.cpp
index 5997c570..ddf81c28 100644
--- a/src/common/platform/win/Win32FileStream.cpp
+++ b/src/common/platform/win/Win32FileStream.cpp
@@ -53,21 +53,7 @@ Win32FileStream::~Win32FileStream() {
bool Win32FileStream::CanSeek() { return true; }
-Index Win32FileStream::Tell() {
- CheckClosed();
-
- LARGE_INTEGER offset;
- offset.QuadPart = 0;
- LARGE_INTEGER file_pointer;
- if (::SetFilePointerEx(p_->handle, offset, &file_pointer, FILE_CURRENT) ==
- 0) {
- throw Win32Error(u"Failed to call SetFilePointerEx.");
- }
-
- return file_pointer.QuadPart;
-}
-
-void Win32FileStream::Seek(Index offset, SeekOrigin origin) {
+Index Win32FileStream::Seek(Index offset, SeekOrigin origin) {
CheckClosed();
DWORD dwMoveMethod = 0;
@@ -82,9 +68,12 @@ void Win32FileStream::Seek(Index offset, SeekOrigin origin) {
LARGE_INTEGER n_offset;
n_offset.QuadPart = offset;
- if (::SetFilePointerEx(p_->handle, n_offset, nullptr, dwMoveMethod) == 0) {
+ LARGE_INTEGER n_new_offset;
+ if (!::SetFilePointerEx(p_->handle, n_offset, &n_new_offset, dwMoveMethod)) {
throw Win32Error(u"Failed to call SetFilePointerEx.");
}
+
+ return n_new_offset.QuadPart;
}
bool Win32FileStream::CanRead() { return true; }