Skip to content

Commit 5917ed3

Browse files
authored
Merge pull request #310 from pozitronik/issue_309
Issue #309
2 parents a997396 + fb5d55b commit 5917ed3

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

models/wfx/MailRuCloudWFX.pas

+15-9
Original file line numberDiff line numberDiff line change
@@ -1079,8 +1079,9 @@ function TMailRuCloudWFX.FsFindFirst(Path: WideString; var FindData: tWIN32FINDD
10791079

10801080
if SkipListDelete or SkipListRenMov or RenMovAborted then
10811081
begin
1082-
SetLastError(ERROR_NO_MORE_FILES);
1083-
exit(INVALID_HANDLE_VALUE);
1082+
Result := INVALID_HANDLE_VALUE;
1083+
SetLastError(ERROR_NO_MORE_FILES); //in some unpredictable situations causes unintentional exit (#308)
1084+
exit;
10841085
end;
10851086

10861087
//Result := FIND_NO_MORE_FILES;
@@ -1094,23 +1095,26 @@ function TMailRuCloudWFX.FsFindFirst(Path: WideString; var FindData: tWIN32FINDD
10941095
FileCounter := 1;
10951096
Result := FIND_ROOT_DIRECTORY;
10961097
end else begin
1097-
Result := INVALID_HANDLE_VALUE; //Нельзя использовать exit
1098-
SetLastError(ERROR_NO_MORE_FILES);
1098+
Result := INVALID_HANDLE_VALUE;
1099+
SetLastError(ERROR_NO_MORE_FILES); //in some unpredictable situations causes unintentional exit (#308)
1100+
exit;
10991101
end;
11001102
end else begin
11011103
RealPath.FromPath(GlobalPath);
11021104
CurrentCloud := ConnectionManager.Get(RealPath.account, getResult);
11031105

11041106
if getResult <> CLOUD_OPERATION_OK then
11051107
begin
1108+
Result := INVALID_HANDLE_VALUE;
11061109
SetLastError(ERROR_ACCESS_DENIED);
1107-
exit(INVALID_HANDLE_VALUE);
1110+
exit;
11081111
end;
11091112

11101113
if not Assigned(CurrentCloud) then
11111114
begin
1115+
Result := INVALID_HANDLE_VALUE;
11121116
SetLastError(ERROR_PATH_NOT_FOUND);
1113-
exit(INVALID_HANDLE_VALUE);
1117+
exit;
11141118
end;
11151119

11161120
if RealPath.trashDir then
@@ -1132,8 +1136,9 @@ function TMailRuCloudWFX.FsFindFirst(Path: WideString; var FindData: tWIN32FINDD
11321136

11331137
if RealPath.isVirtual and not RealPath.isInAccountsList then //игнорим попытки получить листинги объектов вирутальных каталогов
11341138
begin
1139+
Result := INVALID_HANDLE_VALUE;
11351140
SetLastError(ERROR_ACCESS_DENIED);
1136-
exit(INVALID_HANDLE_VALUE);
1141+
exit;
11371142
end;
11381143

11391144
if CurrentCloud.IsPublicAccount then
@@ -1143,8 +1148,9 @@ function TMailRuCloudWFX.FsFindFirst(Path: WideString; var FindData: tWIN32FINDD
11431148

11441149
if not(CurrentItem.isNone or CurrentItem.isDir) then
11451150
begin
1146-
SetLastError(ERROR_PATH_NOT_FOUND);
1147-
exit(INVALID_HANDLE_VALUE);
1151+
Result := INVALID_HANDLE_VALUE;
1152+
SetLastError(ERROR_ACCESS_DENIED);
1153+
exit;
11481154
end;
11491155

11501156
if (Length(CurrentListing) = 0) then

0 commit comments

Comments
 (0)