Skip to content

Commit f05681e

Browse files
committed
Best reading pipe buffers on Posix
Former-commit-id: 6d34d3e01c70ebb2377655b53be28d2d20132bfd [formerly 96afe9710da1b7a3cd7b157a394c6ab9f37ca548] [formerly 21040556e836bd1b7a71a327fbfeec4a6c198ad4 [formerly 7f86505dd070475c495aa11447c5609d6647f82b]] [formerly f75f9526be0ec318f3fd108ab028a7708ca6b624 [formerly 79a73251a6ebea6b37b4a7e2b08782a3e83bdca1] [formerly e1a35881875f2d7151f14f109238fb939540e581 [formerly 34a0b9bc6004434f4e8bb8d870dd523215265792]]] Former-commit-id: eee42b2cb725b7a1d1c864e6f1b1866875aea6b3 [formerly b75e6a7461fb04341d901aa1124c8a1952062210] [formerly f036678619ff1b54e521b5627973df5613baf062 [formerly 8fcacfb3a98fd000335004e4032d01c94cffc04d]] Former-commit-id: e07bff48b435662d757357638b6c03547d43deff [formerly 4bbb439973401090cfc0b8dfe3b8889bc26572c2] Former-commit-id: 898196ef40fb700b72307920e40e17c8edbb861b Former-commit-id: 5183ec4
1 parent f72ad32 commit f05681e

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

src/Tools/ExecCmd/PyTools.ExecCmd.Posix.pas

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,22 @@ constructor TExecCmd.TStdBase.Create(const AParent: TExecCmd;
320320
{ TExecCmd.TStdReader }
321321

322322
function TExecCmd.TStdReader.PeekMessage: string;
323+
324+
function UTF8ArrayToString(const AStrArray: array of Byte): string;
325+
var
326+
LLenght: Integer;
327+
begin
328+
LLenght := Length(AStrArray);
329+
if LLenght = 0 then Exit('');
330+
SetLength(Result, LLenght);
331+
332+
LLenght := Utf8ToUnicode(PWideChar(Result), LLenght + 1, PAnsiChar(@AStrArray[0]), LLenght);
333+
if LLenght > 0 then
334+
SetLength(Result, LLenght - 1)
335+
else
336+
Result := '';
337+
end;
338+
323339
var
324340
LBuffer: array[0..511] of UInt8;
325341
LCount: integer;
@@ -334,7 +350,7 @@ function TExecCmd.TStdReader.PeekMessage: string;
334350
end else if (LCount = 0) then
335351
Exit(String.Empty)
336352
else begin
337-
Exit(Copy(UTF8ToString(@LBuffer[0]), 1, UTF8ToString(@LBuffer[0]).Length -1));
353+
Exit(UTF8ArrayToString(LBuffer));
338354
end;
339355
end;
340356
end;

0 commit comments

Comments
 (0)