@@ -796,7 +796,7 @@ begin
if attr=$8 then
dosregs.ecx:=8
else
- dosregs.ecx:=attr and (not 8);
+ dosregs.ecx:=attr and (not 8) and $FF; { no required attributes }
dosregs.edx:=tb_offset+Sizeof(LFNSearchrec)+1;
dosmemput(tb_segment,tb_offset+Sizeof(LFNSearchrec)+1,path^,strlen(path)+1);
dosregs.ds:=tb_segment;
@@ -591,7 +591,7 @@ begin
dosregs.cx:=8
- dosregs.cx:=attr and (not 8);
+ dosregs.cx:=attr and (not 8) and $FF; { No required attributes }
dosregs.dx:=Ofs(path^);
dosregs.ds:=Seg(path^);
dosregs.di:=Ofs(w);
@@ -92,8 +92,9 @@ threadvar
LastDosErrorModuleName: string;
-const FindResvdMask = $00003737; {Allowed bits in attribute
- specification for DosFindFirst call.}
+const
+ FindResvdMask = $00003737 {Allowed bits for DosFindFirst parameter Attribute}
+ and $000000FF; {combined with a mask for allowed attributes only}
function GetMsCount: int64;
@@ -72,8 +72,8 @@ const
faOpenReplace = $00040000; {Truncate if file exists}
faCreate = $00050000; {Create if file does not exist, truncate otherwise}
- FindResvdMask = $00003737; {Allowed bits in attribute
function FileOpen (const FileName: rawbytestring; Mode: integer): THandle;
Var
@@ -464,7 +464,7 @@ begin
+ dosregs.ecx:=attr and (not 8) and $FF; { No required attributes }