소스 검색

* fixed SysUtils.FindFirst/FindNext/FindClose on i8086-msdos in the compact and
large memory models by changing TSearchRec.FindHandle to a pointer (because
THandle is 16-bit on this platform and is thus not able to hold a far pointer
without truncating it)

git-svn-id: trunk@28451 -

nickysn 11 년 전
부모
커밋
45ed066fed
2개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. 3 3
      rtl/msdos/sysutils.pp
  2. 1 1
      rtl/objpas/sysutils/filutilh.inc

+ 3 - 3
rtl/msdos/sysutils.pp

@@ -353,7 +353,7 @@ Var Sr : PSearchrec;
 begin
   //!! Sr := New(PSearchRec);
   getmem(sr,sizeof(searchrec));
-  Rslt.FindHandle := longint(Sr);
+  Rslt.FindHandle := Sr;
   DOS.FindFirst(Path, Attr, Sr^);
   result := -DosError;
   if result = 0 then
@@ -388,7 +388,7 @@ begin
 end;
 
 
-Procedure InternalFindClose(var Handle: THandle);
+Procedure InternalFindClose(var Handle: Pointer);
 var
   Sr: PSearchRec;
 begin
@@ -400,7 +400,7 @@ begin
       DOS.FindClose(SR^);
       freemem(sr,sizeof(searchrec));
     end;
-  Handle := 0;
+  Handle := nil;
 end;
 
 

+ 1 - 1
rtl/objpas/sysutils/filutilh.inc

@@ -17,7 +17,7 @@ Type
 
 
   // Some operating systems need FindHandle to be a Pointer
-{$if defined(unix)}
+{$if defined(unix) or defined(msdos)}
     {$define FINDHANDLE_IS_POINTER}
 {$endif}