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 /src | |
| 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.
Diffstat (limited to 'src')
| -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 | ||
