aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/a-stunau.adb12
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 1ad4753..0019750 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR ada/13470
+ * a-stunau.adb (Get_String): Don't return U.Reference, but Ret that is
+ set to the new string.
+
2005-01-18 Toon Moene <toon@moene.indiv.nluug.nl>
* system-linux-ppc.ads: Set ZCX_By_Default and GCC_ZCX_Support
diff --git a/gcc/ada/a-stunau.adb b/gcc/ada/a-stunau.adb
index 2fe26cc..9b23cb2 100644
--- a/gcc/ada/a-stunau.adb
+++ b/gcc/ada/a-stunau.adb
@@ -48,16 +48,18 @@ package body Ada.Strings.Unbounded.Aux is
U_Ptr : constant Unbounded_String_Access := U'Unrestricted_Access;
-- Unbounded_String is a controlled type which is always passed
- -- by copy it is always safe to take the pointer to such object
- -- here. This pointer is used to set the U.Reference value which
- -- would not be possible otherwise as U is read-only.
+ -- by reference. It is always safe to take the pointer to such
+ -- object here. This pointer is used to set the U.Reference
+ -- value which would not be possible otherwise as U is read-only.
Old : String_Access := U.Reference;
+ Ret : String_Access;
begin
- U_Ptr.Reference := new String'(U.Reference (1 .. U.Last));
+ Ret := new String'(U.Reference (1 .. U.Last));
+ U_Ptr.Reference := Ret;
Free (Old);
- return U.Reference;
+ return Ret;
end;
end if;
end Get_String;