From: Eric Botcazou <ebotca...@adacore.com>

This is the minimal fix to avoid the crash.

gcc/ada/

        * bcheck.adb (Check_Consistency_Of_Sdep): Guard against path to ALI
        file not found.

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

---
 gcc/ada/bcheck.adb | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/gcc/ada/bcheck.adb b/gcc/ada/bcheck.adb
index 56a417cc517..64a6734a330 100644
--- a/gcc/ada/bcheck.adb
+++ b/gcc/ada/bcheck.adb
@@ -162,10 +162,14 @@ package body Bcheck is
             end if;
 
          else
-            ALI_Path_Id :=
-              Osint.Full_Lib_File_Name (A.Afile);
+            ALI_Path_Id := Osint.Full_Lib_File_Name (A.Afile);
+
+            --  Guard against Find_File not finding (again) the file because
+            --  Primary_Directory has been clobbered in between.
 
-            if Osint.Is_Readonly_Library (ALI_Path_Id) then
+            if Present (ALI_Path_Id)
+              and then Osint.Is_Readonly_Library (ALI_Path_Id)
+            then
                if Tolerate_Consistency_Errors then
                   Error_Msg ("?{ should be recompiled");
                   Error_Msg_File_1 := ALI_Path_Id;
-- 
2.45.1

Reply via email to