Browse Source

--- Merging r14350 into '.':
U rtl/unix/sysutils.pp

git-svn-id: branches/fixes_2_4@14363 -

Jonas Maebe 15 years ago
parent
commit
fbb4490f34
1 changed files with 8 additions and 1 deletions
  1. 8 1
      rtl/unix/sysutils.pp

+ 8 - 1
rtl/unix/sysutils.pp

@@ -343,6 +343,7 @@ var
   lockop: cint;
   lockres: cint;
   closeres: cint;
+  lockerr: cint;
 begin
   DoFileLocking:=Handle;
 {$ifdef beos}
@@ -392,7 +393,13 @@ begin
         lockres:=fpflock(Handle,lockop);
       until (lockres=0) or
             (fpgeterrno<>ESysEIntr);
-      if (lockres<>0) then
+      lockerr:=fpgeterrno;
+      { Only return an error if locks are working and the file was already
+        locked. Not if locks are simply unsupported (e.g., on Angstrom Linux
+        you always get ESysNOLCK in the default configuration) }
+      if (lockres<>0) and
+         ((lockerr=ESysEAGAIN) or
+          (lockerr=EsysEDEADLK)) then
         begin
           repeat
             closeres:=FpClose(Handle);