diff options
author | Rob Mensching <rob@firegiant.com> | 2021-04-12 15:08:52 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2021-04-12 15:11:43 -0700 |
commit | 2113f2bedbdf5c2f8fb21fc5dfacc6ddc7379fe7 (patch) | |
tree | 74a454d02bd655318bfad1ee03dbf14c2f785cee | |
parent | b2c4600453f926fbfdc63219126930ad39601f25 (diff) | |
download | wix-2113f2bedbdf5c2f8fb21fc5dfacc6ddc7379fe7.tar.gz wix-2113f2bedbdf5c2f8fb21fc5dfacc6ddc7379fe7.tar.bz2 wix-2113f2bedbdf5c2f8fb21fc5dfacc6ddc7379fe7.zip |
Make FileCopyUsingHandlesWithProgress more like MoveFileWithProgress
FileCopyUsingHandlesWithProgress now returns ERROR_REQUEST_ABORTED
as an HRESULT when canceled or stopping rather than return success.
-rw-r--r-- | src/dutil/fileutil.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/dutil/fileutil.cpp b/src/dutil/fileutil.cpp index 06a44b45..cb67813d 100644 --- a/src/dutil/fileutil.cpp +++ b/src/dutil/fileutil.cpp | |||
@@ -1120,7 +1120,6 @@ extern "C" HRESULT DAPI FileCopyUsingHandlesWithProgress( | |||
1120 | ) | 1120 | ) |
1121 | { | 1121 | { |
1122 | HRESULT hr = S_OK; | 1122 | HRESULT hr = S_OK; |
1123 | BOOL fStop = FALSE; | ||
1124 | BOOL fCanceled = FALSE; | 1123 | BOOL fCanceled = FALSE; |
1125 | DWORD64 cbTotalCopied = 0; | 1124 | DWORD64 cbTotalCopied = 0; |
1126 | BYTE rgbData[64 * 1024]; | 1125 | BYTE rgbData[64 * 1024]; |
@@ -1147,12 +1146,10 @@ extern "C" HRESULT DAPI FileCopyUsingHandlesWithProgress( | |||
1147 | 1146 | ||
1148 | case PROGRESS_CANCEL: | 1147 | case PROGRESS_CANCEL: |
1149 | fCanceled = TRUE; | 1148 | fCanceled = TRUE; |
1150 | fStop = TRUE; | 1149 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)); |
1151 | break; | ||
1152 | 1150 | ||
1153 | case PROGRESS_STOP: | 1151 | case PROGRESS_STOP: |
1154 | fStop = TRUE; | 1152 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)); |
1155 | break; | ||
1156 | 1153 | ||
1157 | case PROGRESS_QUIET: | 1154 | case PROGRESS_QUIET: |
1158 | lpProgressRoutine = NULL; | 1155 | lpProgressRoutine = NULL; |
@@ -1173,7 +1170,7 @@ extern "C" HRESULT DAPI FileCopyUsingHandlesWithProgress( | |||
1173 | } | 1170 | } |
1174 | 1171 | ||
1175 | // Copy with progress. | 1172 | // Copy with progress. |
1176 | while (!fStop && (0 == cbCopy || cbTotalCopied < cbCopy)) | 1173 | while (0 == cbCopy || cbTotalCopied < cbCopy) |
1177 | { | 1174 | { |
1178 | cbRead = static_cast<DWORD>((0 == cbCopy) ? countof(rgbData) : min(countof(rgbData), cbCopy - cbTotalCopied)); | 1175 | cbRead = static_cast<DWORD>((0 == cbCopy) ? countof(rgbData) : min(countof(rgbData), cbCopy - cbTotalCopied)); |
1179 | if (!::ReadFile(hSource, rgbData, cbRead, &cbRead, NULL)) | 1176 | if (!::ReadFile(hSource, rgbData, cbRead, &cbRead, NULL)) |
@@ -1199,12 +1196,10 @@ extern "C" HRESULT DAPI FileCopyUsingHandlesWithProgress( | |||
1199 | 1196 | ||
1200 | case PROGRESS_CANCEL: | 1197 | case PROGRESS_CANCEL: |
1201 | fCanceled = TRUE; | 1198 | fCanceled = TRUE; |
1202 | fStop = TRUE; | 1199 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)); |
1203 | break; | ||
1204 | 1200 | ||
1205 | case PROGRESS_STOP: | 1201 | case PROGRESS_STOP: |
1206 | fStop = TRUE; | 1202 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)); |
1207 | break; | ||
1208 | 1203 | ||
1209 | case PROGRESS_QUIET: | 1204 | case PROGRESS_QUIET: |
1210 | lpProgressRoutine = NULL; | 1205 | lpProgressRoutine = NULL; |
@@ -1214,7 +1209,7 @@ extern "C" HRESULT DAPI FileCopyUsingHandlesWithProgress( | |||
1214 | } | 1209 | } |
1215 | else | 1210 | else |
1216 | { | 1211 | { |
1217 | fStop = TRUE; | 1212 | break; |
1218 | } | 1213 | } |
1219 | } | 1214 | } |
1220 | 1215 | ||