* i-c.adb (To_C): Raise CE if string is null and Append_Null
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 3 Jan 2005 15:38:17 +0000 (16:38 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 3 Jan 2005 15:38:17 +0000 (16:38 +0100)
From-SVN: r92839

gcc/ada/i-c.adb

index 65e40b2971012e795fb98fb5e63e4f716f34d0f1..844f016441eedf54ca5d15783b39eb309f07dc08 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2001 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 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- --
@@ -289,21 +289,20 @@ package body Interfaces.C is
             return R;
          end;
 
-      else -- Append_Nul is False
+      --  Append_Nul False
+
+      else
 
          --  A nasty case, if the string is null, we must return
          --  a null char_array. The lower bound of this array is
          --  required to be zero (RM B.3(50)) but that is of course
-         --  impossible given that size_t is unsigned. This needs
-         --  ARG resolution, but for now GNAT returns bounds 1 .. 0
+         --  impossible given that size_t is unsigned. According to
+         --  Ada 2005 AI-258, the result is to raise Constraint_Error.
 
          if Item'Length = 0 then
-            declare
-               R : char_array (1 .. 0);
+            raise Constraint_Error;
 
-            begin
-               return R;
-            end;
+         --  Normal case
 
          else
             declare