aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-04-12 15:08:52 -0700
committerRob Mensching <rob@firegiant.com>2021-04-12 15:11:43 -0700
commit2113f2bedbdf5c2f8fb21fc5dfacc6ddc7379fe7 (patch)
tree74a454d02bd655318bfad1ee03dbf14c2f785cee
parentb2c4600453f926fbfdc63219126930ad39601f25 (diff)
downloadwix-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.cpp17
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