]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2010-01-27 Pascal Obry <obry@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Jan 2010 14:15:42 +0000 (14:15 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Jan 2010 14:15:42 +0000 (14:15 +0000)
* g-awk.adb: ensure that an AWK session is reusable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156285 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/g-awk.adb

index a0ff729910c3baa8e893f7981f9c9c81e840ec2d..303ab26ddb379895d774b6361a4d9c4c3c3edad8 100644 (file)
@@ -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.
index 0dee657b140f6208b57d81e0c8641ecf3e869049..6c8fa1a8bb81f4e30260a1804af4d92a330c47ea 100644 (file)
@@ -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