The following program should not raise Program_Error, but does.

procedure p is

   procedure xxxx (txt: WIDE_STRING) is
      pragma Assert(txt'length > 0, "string is empty");

      result: WIDE_STRING(txt'first .. txt'first + 3);

   begin
      result(txt'first .. txt'first + 3) := "xxxx";
      if result(txt'first .. txt'first + 3) /= "xxxx" then
         raise program_error;
      end if;
   end xxxx;

begin
   xxxx("_");
end p;

URL: svn://gcc.gnu.org/svn/gcc/tags/gcc_4_1_0_release
Revision: 113107
Linux sonnenregen 2.6.12-10-686-smp #1 SMP Sat Mar 11 16:41:12 UTC 2006 i686
GNU/Linux


-- 
           Summary: Wide_String slice assignment in nested procedure does
                    not work properly
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bauhaus at futureapps dot de
 GCC build triplet:  i686-pc-linux-gnu
  GCC host triplet:  i686-pc-linux-gnu
GCC target triplet:  i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27225

Reply via email to