diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-10-10 13:28:21 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-10-10 13:28:21 +0000 |
commit | 953378aeb11da279260e4451048dea679684c636 (patch) | |
tree | c0a1af73f0e07dee9b5802115990158c3bc85faf /gcc/ada/a-stzmap.adb | |
parent | 8ff8a9a3e4a1242e540dcd88b08450d4979213c8 (diff) | |
download | gcc-953378aeb11da279260e4451048dea679684c636.tar.gz |
2014-10-10 Robert Dewar <dewar@adacore.com>
* sem_ch13.adb: Minor code reorganization.
2014-10-10 Pat Rogers <rogers@adacore.com>
* gnat_rm.texi: Text now indicates pragma No_Run_Time is not
for users.
2014-10-10 Vadim Godunko <godunko@adacore.com>
* a-coinho-shared.adb: Add minor comment.
* a-stzmap.adb (To_Sequence): Compute size of result array.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216081 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/a-stzmap.adb')
-rw-r--r-- | gcc/ada/a-stzmap.adb | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/ada/a-stzmap.adb b/gcc/ada/a-stzmap.adb index 08cae19bd83..0afe4ff868f 100644 --- a/gcc/ada/a-stzmap.adb +++ b/gcc/ada/a-stzmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2014, Free Software Foundation, Inc. -- -- -- -- 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- -- @@ -570,20 +570,25 @@ package body Ada.Strings.Wide_Wide_Maps is function To_Sequence (Set : Wide_Wide_Character_Set) return Wide_Wide_Character_Sequence is - SS : constant Wide_Wide_Character_Ranges_Access := Set.Set; - - Result : Wide_Wide_String (Positive range 1 .. 2 ** 16); - N : Natural := 0; + SS : constant Wide_Wide_Character_Ranges_Access := Set.Set; + N : Natural := 0; + Count : Natural := 0; begin for J in SS'Range loop - for K in SS (J).Low .. SS (J).High loop - N := N + 1; - Result (N) := K; - end loop; + Count := + Count + (Wide_Wide_Character'Pos (SS (J).High) - + Wide_Wide_Character'Pos (SS (J).Low) + 1); end loop; - return Result (1 .. N); + return Result : Wide_Wide_String (1 .. Count) do + for J in SS'Range loop + for K in SS (J).Low .. SS (J).High loop + N := N + 1; + Result (N) := K; + end loop; + end loop; + end return; end To_Sequence; ------------ |