2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-02 05:50:26 +08:00

g-expect.adb (Non_Blocking_Spawn): Initialize the filters field to

2005-09-01  Jerome Lambourg  <lambourg@adacore.com>

	* g-expect.adb (Non_Blocking_Spawn): Initialize the filters field to
	(Free): New deallocation procedure for filter elements
	(Close): Deallocate any existing filter for the concerned connection

From-SVN: r103866
This commit is contained in:
Jerome Lambourg 2005-09-05 09:54:22 +02:00 committed by Arnaud Charlet
parent 829c2849c1
commit dd52e06aa0

@ -69,6 +69,9 @@ package body GNAT.Expect is
procedure Free is new Unchecked_Deallocation
(Pattern_Matcher, Pattern_Matcher_Access);
procedure Free is new Unchecked_Deallocation
(Filter_List_Elem, Filter_List);
procedure Call_Filters
(Pid : Process_Descriptor'Class;
Str : String;
@ -204,6 +207,9 @@ package body GNAT.Expect is
(Descriptor : in out Process_Descriptor;
Status : out Integer)
is
Current_Filter : Filter_List;
Next_Filter : Filter_List;
begin
Close (Descriptor.Input_Fd);
@ -214,11 +220,21 @@ package body GNAT.Expect is
Close (Descriptor.Output_Fd);
-- ??? Should have timeouts for different signals
Kill (Descriptor.Pid, 9);
GNAT.OS_Lib.Free (Descriptor.Buffer);
Descriptor.Buffer_Size := 0;
Current_Filter := Descriptor.Filters;
while Current_Filter /= null loop
Next_Filter := Current_Filter.Next;
Free (Current_Filter);
Current_Filter := Next_Filter;
end loop;
Descriptor.Filters := null;
Status := Waitpid (Descriptor.Pid);
end Close;
@ -1001,6 +1017,10 @@ package body GNAT.Expect is
if Buffer_Size /= 0 then
Descriptor.Buffer := new String (1 .. Positive (Buffer_Size));
end if;
-- Initialize the filters
Descriptor.Filters := null;
end Non_Blocking_Spawn;
-------------------------