mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
FIX: Hangs when cannot open/create file with elevation (issue #1379)
This commit is contained in:
parent
4cbf094658
commit
a0c19151b5
2 changed files with 21 additions and 3 deletions
|
|
@ -296,6 +296,7 @@ end;
|
|||
function TWorkerProxy.ProcessObject(ACommand: UInt32; const ObjectName: String;
|
||||
Mode: Integer): THandle;
|
||||
var
|
||||
LastError: Integer;
|
||||
Stream: TMemoryStream;
|
||||
begin
|
||||
Result:= feInvalidHandle;
|
||||
|
|
@ -314,7 +315,12 @@ begin
|
|||
// Send command
|
||||
FClient.WriteBuffer(Stream.Memory^, Stream.Size);
|
||||
// Receive command result
|
||||
FClient.ReadHandle(Result);
|
||||
FClient.ReadBuffer(LastError, SizeOf(LastError));
|
||||
if (LastError = 0) then
|
||||
FClient.ReadHandle(Result)
|
||||
else begin
|
||||
SetLastOSError(LastError);
|
||||
end;
|
||||
finally
|
||||
Stream.Free;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -224,7 +224,13 @@ begin
|
|||
Mode:= ARequest.ReadDWord;
|
||||
DCDebug('FileOpen ', FileName);
|
||||
Handle:= mbFileOpen(FileName, Mode);
|
||||
ATransport.WriteHandle(Handle);
|
||||
if (Handle <> feInvalidHandle) then
|
||||
LastError:= 0
|
||||
else begin
|
||||
LastError:= GetLastOSError;
|
||||
end;
|
||||
ATransport.WriteBuffer(LastError, SizeOf(LastError));
|
||||
if (LastError = 0) then ATransport.WriteHandle(Handle);
|
||||
end;
|
||||
RPC_FileCreate:
|
||||
begin
|
||||
|
|
@ -232,7 +238,13 @@ begin
|
|||
Mode:= ARequest.ReadDWord;
|
||||
DCDebug('FileCreate ', FileName);
|
||||
Handle:= mbFileCreate(FileName, Mode);
|
||||
ATransport.WriteHandle(Handle);
|
||||
if (Handle <> feInvalidHandle) then
|
||||
LastError:= 0
|
||||
else begin
|
||||
LastError:= GetLastOSError;
|
||||
end;
|
||||
ATransport.WriteBuffer(LastError, SizeOf(LastError));
|
||||
if (LastError = 0) then ATransport.WriteHandle(Handle);
|
||||
end;
|
||||
RPC_RenameFile:
|
||||
begin
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue