https://gcc.gnu.org/g:88fc730efdd31cc4bf13932ff3cc5b097a5eb23c

commit r15-2636-g88fc730efdd31cc4bf13932ff3cc5b097a5eb23c
Author: Yannick Moy <m...@adacore.com>
Date:   Wed Jul 3 15:23:34 2024 +0200

    ada: Fix computation of new size when reallocating unbounded string
    
    The procedure Realloc_For_Chunk which is used to reallocate an unbounded
    string when needed may lead in theory to an overflow, due to the use of
    variable S_Length denoting the current allocated length instead of
    Source.Last denoting the current string length. Now fixed.
    
    This has no effect in practice since the only targets that use this
    version of Ada.Strings.Unbounded do not have enough memory to make it
    possible to have an overflow here.
    
    gcc/ada/
    
            * libgnat/a-strunb.adb (Realloc_For_Chunk): Fix computation of new
            size.

Diff:
---
 gcc/ada/libgnat/a-strunb.adb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ada/libgnat/a-strunb.adb b/gcc/ada/libgnat/a-strunb.adb
index 219abad3f07b..c3d4c71271b2 100644
--- a/gcc/ada/libgnat/a-strunb.adb
+++ b/gcc/ada/libgnat/a-strunb.adb
@@ -824,7 +824,7 @@ package body Ada.Strings.Unbounded is
          declare
             New_Size : constant Positive :=
               Saturated_Sum
-                (Sum (S_Length, Chunk_Size), S_Length / Growth_Factor);
+                (Sum (Source.Last, Chunk_Size), S_Length / Growth_Factor);
 
             New_Rounded_Up_Size : constant Positive :=
               Saturated_Mul

Reply via email to