diff options
author | Pascal Obry <obry@adacore.com> | 2010-01-27 14:15:42 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-01-27 15:15:42 +0100 |
commit | 09d7d413bdf2715a97190f7effc2d1b098225e7c (patch) | |
tree | 306ec243504f4966a74c0cedbc57b00e91e4063d | |
parent | 0309455b5035575ca19b1a6e23f8109db9e7797e (diff) | |
download | gcc-09d7d413bdf2715a97190f7effc2d1b098225e7c.zip gcc-09d7d413bdf2715a97190f7effc2d1b098225e7c.tar.gz gcc-09d7d413bdf2715a97190f7effc2d1b098225e7c.tar.bz2 |
g-awk.adb: ensure that an AWK session is reusable.
2010-01-27 Pascal Obry <obry@adacore.com>
* g-awk.adb: ensure that an AWK session is reusable.
From-SVN: r156285
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/g-awk.adb | 22 |
2 files changed, 15 insertions, 11 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a0ff729..303ab26 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2010-01-27 Pascal Obry <obry@adacore.com> + + * g-awk.adb: ensure that an AWK session is reusable. + 2010-01-27 Vasiliy Fofanov <fofanov@adacore.com> * g-regist.adb (For_Every_Key): Fix previous change. 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 |