aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Obry <obry@adacore.com>2010-01-27 14:15:42 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2010-01-27 15:15:42 +0100
commit09d7d413bdf2715a97190f7effc2d1b098225e7c (patch)
tree306ec243504f4966a74c0cedbc57b00e91e4063d
parent0309455b5035575ca19b1a6e23f8109db9e7797e (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/ada/g-awk.adb22
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