aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sinput.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2013-09-10 17:21:28 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2013-09-10 17:21:28 +0200
commitfb620b37dec4b0c1e9855a59a0c4dfa28fb58d01 (patch)
tree2aa1248d70e80464bb18ab1104c8321f79d18735 /gcc/ada/sinput.adb
parentac4018917999464e601b2e675ac326cbbf0044da (diff)
downloadgcc-fb620b37dec4b0c1e9855a59a0c4dfa28fb58d01.zip
gcc-fb620b37dec4b0c1e9855a59a0c4dfa28fb58d01.tar.gz
gcc-fb620b37dec4b0c1e9855a59a0c4dfa28fb58d01.tar.bz2
[multiple changes]
2013-09-10 Robert Dewar <dewar@adacore.com> * sinput.adb (Check_For_BOM): Avoid reading past end of file. 2013-09-10 Robert Dewar <dewar@adacore.com> * errout.adb (Error_Msg_Ada_2012_Feature): New procedure. * errout.ads (Error_Msg_Ada_2012_Feature): New procedure. * inline.ads: Save/Restore Ada_Version_Pragma. * opt.adb: Save/Restore Ada_Version_Pragma. * opt.ads (Ada_Version_Pragma): New variable. * par-ch11.adb, par-ch12.adb, par-ch13.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch8.adb, par-prag.adb: Use Error_Msg_Ada_2012_Feature. * prj.adb: Initialize Ada_Version_Pragma. * sem_attr.adb: Use Error_Msg_Ada_2012_Feature. * sem_ch12.adb, sem_ch8.adb: Save/restore Ada_Version_Pragma. * sem_prag.adb (Analyze_Pragma, cases Ada_xx): Set Ada_Version_Pragma. * switch-c.adb: Initialize Ada_Version_Pragma. * sem_ch12.adb: Minor reformatting. 2013-09-10 Ed Schonberg <schonberg@adacore.com> * sem_ch3.adb (Process_Subtype): Discard constraint on access to class-wide type. Such constraints are not supported and are considered a language pathology. From-SVN: r202466
Diffstat (limited to 'gcc/ada/sinput.adb')
-rw-r--r--gcc/ada/sinput.adb14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ada/sinput.adb b/gcc/ada/sinput.adb
index 29be59a..a01c045 100644
--- a/gcc/ada/sinput.adb
+++ b/gcc/ada/sinput.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -258,10 +258,20 @@ package body Sinput is
BOM : BOM_Kind;
Len : Natural;
Tst : String (1 .. 5);
+ C : Character;
begin
for J in 1 .. 5 loop
- Tst (J) := Source (Scan_Ptr + Source_Ptr (J) - 1);
+ C := Source (Scan_Ptr + Source_Ptr (J) - 1);
+
+ -- Definitely no BOM if EOF character marks either end of file, or
+ -- an illegal non-BOM character if not at the end of file.
+
+ if C = EOF then
+ return;
+ end if;
+
+ Tst (J) := C;
end loop;
Read_BOM (Tst, Len, BOM, False);