| -- { dg-do run } | |
| with Ada.Unchecked_Deallocation; | |
| procedure Array_Bounds_Test2 is | |
| type String_Ptr_T is access String; | |
| procedure Free is new Ada.Unchecked_Deallocation (String, String_Ptr_T); | |
| String_Data : String_Ptr_T := new String'("Hello World"); | |
| function Peek return String_Ptr_T is | |
| begin | |
| return String_Data; | |
| end Peek; | |
| begin | |
| declare | |
| Corrupted_String : String := Peek.all; | |
| begin | |
| Free(String_Data); | |
| if Corrupted_String'First /= 1 then | |
| raise Program_Error; | |
| end if; | |
| end; | |
| end; |