From 9a191a62fe59eadc2051daaab7a85215346c9200 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 6 Mar 2017 07:56:46 +0100 Subject: Do not crash on empty file. Fix #309 --- src/files_map.adb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/files_map.adb') diff --git a/src/files_map.adb b/src/files_map.adb index 4d75a35d2..3cb7e0594 100644 --- a/src/files_map.adb +++ b/src/files_map.adb @@ -796,15 +796,21 @@ package body Files_Map is -- Load_Source_File call must follow its Create_Source_File. pragma Assert (Source_Files.Table (Res).First_Location = Next_Location); + -- Compute the SHA1. declare use GNAT.SHA1; use Str_Table; subtype Buffer_String is String (1 .. Buffer'Length - 2); - Buffer_Digest : constant Message_Digest := - Digest (Buffer_String - (Buffer (Source_Ptr_Org .. Source_Ptr_Org + Length - 1))); + Buffer_Digest : Message_Digest; begin + if Length /= 0 then + -- Avoid weird bounds for empty buffers. + Buffer_Digest := Digest + (Buffer_String + (Buffer (Source_Ptr_Org .. Source_Ptr_Org + Length - 1))); + end if; + Source_Files.Table (Res).Checksum := File_Checksum_Id (Create_String8); for I in Buffer_Digest'Range loop -- cgit v1.2.3