From 5dece937ef0712e0d60863f0db867d0abe72623a Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 30 Oct 2001 21:27:26 +0000 Subject: * utils2.c (build_allocator): Test for SIZE overflow in array case too From-SVN: r46653 --- gcc/ada/ChangeLog | 4 ++++ gcc/ada/utils2.c | 5 +++++ 2 files changed, 9 insertions(+) (limited to 'gcc') diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a075fd9..ea236fc 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2001-10-30 Richard Kenner + + * utils2.c (build_allocator): Test for SIZE overflow in array case too + 2001-10-30 Geert Bosch * ali-util.adb (Initialize_Checksum): Use out-mode instead of in out. diff --git a/gcc/ada/utils2.c b/gcc/ada/utils2.c index 7cc8a3f..a5363a7 100644 --- a/gcc/ada/utils2.c +++ b/gcc/ada/utils2.c @@ -1855,6 +1855,11 @@ build_allocator (type, init, result_type, gnat_proc, gnat_pool) && contains_placeholder_p (size)) size = build (WITH_RECORD_EXPR, sizetype, size, init); + /* If the size overflows, pass -1 so the allocator will raise + storage error. */ + if (TREE_CODE (size) == INTEGER_CST && TREE_OVERFLOW (size)) + size = ssize_int (-1); + storage = build_call_alloc_dealloc (NULL_TREE, size, TYPE_ALIGN (storage_type), gnat_proc, gnat_pool); -- cgit v1.1