From: Justin Squirek <squi...@adacore.com>

The patch fixes an issue in the compiler whereby calls to
GNAT.Calendar.Time_IO.Value where the actual for formal String Date with
indexing starting at any value besides one would result in a spurious runtime
exception.

gcc/ada/

        * libgnat/g-catiio.adb (Value): Modify conditionals to use 'Last
        instead of 'Length

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/libgnat/g-catiio.adb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/ada/libgnat/g-catiio.adb b/gcc/ada/libgnat/g-catiio.adb
index 42b86cce4a1..d80e6fc1ca0 100644
--- a/gcc/ada/libgnat/g-catiio.adb
+++ b/gcc/ada/libgnat/g-catiio.adb
@@ -849,7 +849,7 @@ package body GNAT.Calendar.Time_IO is
       begin
          Advance_Digits (Num_Digits => 1);
 
-         while Index <= Date'Length and then Symbol in '0' .. '9' loop
+         while Index <= Date'Last and then Symbol in '0' .. '9' loop
             Advance;
          end loop;
 
@@ -1005,7 +1005,7 @@ package body GNAT.Calendar.Time_IO is
 
       --  Check for trailing characters
 
-      if Index /= Date'Length + 1 then
+      if Index /= Date'Last + 1 then
          raise Wrong_Syntax;
       end if;
 
-- 
2.42.0

Reply via email to