summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-13 10:43:51 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-13 10:43:51 +0000
commitb06d1bc32090ab9e34e09bd23112db3d84d1b6f8 (patch)
treec38fb30d974e308adfd91250aa0581785dc69182 /gcc
parent7af7059aa2972cf1c33e684cc3fadae6813c3467 (diff)
downloadgcc-b06d1bc32090ab9e34e09bd23112db3d84d1b6f8.tar.gz
2007-12-06 Emmanuel Briot <briot@adacore.com>
* s-os_lib.ads, s-os_lib.adb (Normalize_Pathname): Do not compute Reference_Dir unless we actually need it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130875 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rwxr-xr-xgcc/ada/s-os_lib.adb19
-rwxr-xr-xgcc/ada/s-os_lib.ads7
2 files changed, 15 insertions, 11 deletions
diff --git a/gcc/ada/s-os_lib.adb b/gcc/ada/s-os_lib.adb
index af4c394b47b..7082ff0930c 100755
--- a/gcc/ada/s-os_lib.adb
+++ b/gcc/ada/s-os_lib.adb
@@ -1822,9 +1822,6 @@ package body System.OS_Lib is
end if;
end Get_Directory;
- Reference_Dir : constant String := Get_Directory (Directory);
- -- Current directory name specified
-
-- Start of processing for Normalize_Pathname
begin
@@ -1927,12 +1924,18 @@ package body System.OS_Lib is
if Last = 1
and then not Is_Absolute_Path (Path_Buffer (1 .. End_Path))
then
- Path_Buffer
- (Reference_Dir'Length + 1 .. Reference_Dir'Length + End_Path) :=
+ declare
+ Reference_Dir : constant String := Get_Directory (Directory);
+ Ref_Dir_Len : constant Natural := Reference_Dir'Length;
+ -- Current directory name specified and its length
+
+ begin
+ Path_Buffer (Ref_Dir_Len + 1 .. Ref_Dir_Len + End_Path) :=
Path_Buffer (1 .. End_Path);
- End_Path := Reference_Dir'Length + End_Path;
- Path_Buffer (1 .. Reference_Dir'Length) := Reference_Dir;
- Last := Reference_Dir'Length;
+ End_Path := Ref_Dir_Len + End_Path;
+ Path_Buffer (1 .. Ref_Dir_Len) := Reference_Dir;
+ Last := Ref_Dir_Len;
+ end;
end if;
Start := Last + 1;
diff --git a/gcc/ada/s-os_lib.ads b/gcc/ada/s-os_lib.ads
index bde73fdc616..e3c1079df19 100755
--- a/gcc/ada/s-os_lib.ads
+++ b/gcc/ada/s-os_lib.ads
@@ -507,6 +507,7 @@ package System.OS_Lib is
-- directories listed in the environment Path. If the Exec_Name doesn't
-- have the executable suffix, it will be appended before the search.
-- Otherwise works like Locate_Regular_File below.
+ -- If the executable is not found, null is returned.
--
-- Note that this function allocates some memory for the returned value.
-- This memory needs to be deallocated after use.
@@ -654,9 +655,9 @@ package System.OS_Lib is
-- (notably Unix systems) a simple file name may also work (if the
-- executable can be located in the path).
--
- -- "Spawn" should not be used in tasking applications. Why not??? More
- -- documentation would be helpful here ??? Is it really tasking programs,
- -- or tasking activity that cause trouble ???
+ -- "Spawn" should be avoided in tasking applications, since there are
+ -- subtle interactions between creating a process and signals/locks
+ -- that can cause troubles.
--
-- Note: Arguments in Args that contain spaces and/or quotes such as
-- "--GCC=gcc -v" or "--GCC=""gcc -v""" are not portable across all