From 09d7d413bdf2715a97190f7effc2d1b098225e7c Mon Sep 17 00:00:00 2001 From: Pascal Obry Date: Wed, 27 Jan 2010 14:15:42 +0000 Subject: g-awk.adb: ensure that an AWK session is reusable. 2010-01-27 Pascal Obry * g-awk.adb: ensure that an AWK session is reusable. From-SVN: r156285 --- gcc/ada/g-awk.adb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'gcc/ada/g-awk.adb') diff --git a/gcc/ada/g-awk.adb b/gcc/ada/g-awk.adb index 0dee657..6c8fa1a 100644 --- a/gcc/ada/g-awk.adb +++ b/gcc/ada/g-awk.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2000-2008, AdaCore -- +-- Copyright (C) 2000-2010, AdaCore -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -294,6 +294,10 @@ package body GNAT.AWK is -- We release the session data only if it is not the default session if Session.Data /= Get_Def then + -- Release separators + + Free (Session.Data.Separators); + Free (Session.Data); -- Since we have closed the current session, set it to point now to @@ -485,11 +489,10 @@ package body GNAT.AWK is procedure Current_Line (S : Separator; Session : Session_Type) is Line : constant String := To_String (Session.Data.Current_Line); Fields : Field_Table.Instance renames Session.Data.Fields; + Seps : constant Maps.Character_Set := Maps.To_Set (S.Separators); - Start : Natural; - Stop : Natural; - - Seps : constant Maps.Character_Set := Maps.To_Set (S.Separators); + Start : Natural; + Stop : Natural; begin -- First field start here @@ -506,8 +509,8 @@ package body GNAT.AWK is -- Look for next separator Stop := Fixed.Index - (Source => Line (Start .. Line'Last), - Set => Seps); + (Source => Line (Start .. Line'Last), + Set => Seps); exit when Stop = 0; @@ -526,6 +529,7 @@ package body GNAT.AWK is if Start = 0 then Start := Stop + 1; end if; + else Start := Stop + 1; end if; @@ -707,10 +711,6 @@ package body GNAT.AWK is Text_IO.Close (Session.Data.Current_File); end if; - -- Release separators - - Free (Session.Data.Separators); - -- Release Filters table for F in 1 .. Pattern_Action_Table.Last (Filters) loop -- cgit v1.1