aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2019-08-12 09:01:14 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-08-12 09:01:14 +0000
commit18ba4b0dbd971fc879c8db3cbe50726c8bd7c25e (patch)
tree25ec535fede4776b7031e22dfb6509150e949539
parent0e5f9f5020f798333b7ca2fd10cd48d8cfc09e6c (diff)
downloadgcc-18ba4b0dbd971fc879c8db3cbe50726c8bd7c25e.zip
gcc-18ba4b0dbd971fc879c8db3cbe50726c8bd7c25e.tar.gz
gcc-18ba4b0dbd971fc879c8db3cbe50726c8bd7c25e.tar.bz2
[Ada] Prevent crash in Put_Scaled
This patch fixes a bug in Put_Scaled, which causes a crash when checks are on. 2019-08-12 Bob Duff <duff@adacore.com> gcc/ada/ * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being negative, since Field is range 0 .. something. From-SVN: r274300
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/libgnat/a-tifiio.adb2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 1bf7e6d..97f3141 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2019-08-12 Bob Duff <duff@adacore.com>
+ * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being
+ negative, since Field is range 0 .. something.
+
+2019-08-12 Bob Duff <duff@adacore.com>
+
* doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp,
gnatstub): Remove documentation for Ada language version
switches, and note that they are no longer needed.
diff --git a/gcc/ada/libgnat/a-tifiio.adb b/gcc/ada/libgnat/a-tifiio.adb
index 1c817ea8..d048646 100644
--- a/gcc/ada/libgnat/a-tifiio.adb
+++ b/gcc/ada/libgnat/a-tifiio.adb
@@ -560,7 +560,7 @@ package body Ada.Text_IO.Fixed_IO is
E : Integer)
is
pragma Assert (E >= -Max_Digits);
- AA : constant Field := E + A;
+ AA : constant Field := Integer'Max (E + A, 0);
N : constant Natural := (AA + Max_Digits - 1) / Max_Digits + 1;
Q : array (0 .. N - 1) of Int64 := (others => 0);