Răsfoiți Sursa

Set filemode to READ_ONLY for CopyFile source and correct error in previous commit

git-svn-id: trunk@29273 -
pierre 10 ani în urmă
părinte
comite
ddf1a3ea76
1 a modificat fișierele cu 9 adăugiri și 7 ștergeri
  1. 9 7
      tests/utils/dotest.pp

+ 9 - 7
tests/utils/dotest.pp

@@ -404,7 +404,7 @@ const
   bufsize = 16384;
   bufsize = 16384;
 var
 var
   f,g : file;
   f,g : file;
-  oldfilemode : longint;
+  oldfilemode : byte;
   st : string;
   st : string;
   addsize,
   addsize,
   i   : longint;
   i   : longint;
@@ -435,18 +435,18 @@ begin
    end;
    end;
   assign(f,fn1);
   assign(f,fn1);
   {$I-}
   {$I-}
-   reset(f,1);
+  { Try using read only file mode }
+  oldfilemode:=filemode;
+  filemode:=READ_ONLY;
+  reset(f,1);
   {$I+}
   {$I+}
   addsize:=0;
   addsize:=0;
+  getmem(buf,bufsize);
   if ioresult<>0 then
   if ioresult<>0 then
    begin
    begin
      sleep(1000);
      sleep(1000);
      {$I-}
      {$I-}
-      { Retry using read only file mode }
-      oldfilemode:=system.filemode;
-      system.filemode:=READ_ONLY;
       reset(f,1);
       reset(f,1);
-      filemode:=oldfilemode;
      {$I+}
      {$I+}
       if ioresult<>0 then
       if ioresult<>0 then
         begin
         begin
@@ -456,11 +456,13 @@ begin
           // blocksize is larger than 255, so no check is needed
           // blocksize is larger than 255, so no check is needed
           move(st[1],buf^,i);
           move(st[1],buf^,i);
           blockwrite(g,buf^,i);
           blockwrite(g,buf^,i);
+          freemem(buf,bufsize);
           close(g);
           close(g);
+          filemode:=oldfilemode;
           exit;
           exit;
         end;
         end;
    end;
    end;
-  getmem(buf,bufsize);
+  filemode:=oldfilemode;
   repeat
   repeat
     blockread(f,buf^,bufsize,i);
     blockread(f,buf^,bufsize,i);
     blockwrite(g,buf^,i);
     blockwrite(g,buf^,i);