aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorThomas Quinot <quinot@adacore.com>2006-10-31 19:00:42 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2006-10-31 19:00:42 +0100
commitad98c85e5b31557702533ffe9fe8109ba642705c (patch)
treef6767151ab9a798d0eddba4c931af96431abf232 /gcc/ada
parent8967c38f74e68783fdbff9ad8759178d83eef637 (diff)
downloadgcc-ad98c85e5b31557702533ffe9fe8109ba642705c.zip
gcc-ad98c85e5b31557702533ffe9fe8109ba642705c.tar.gz
gcc-ad98c85e5b31557702533ffe9fe8109ba642705c.tar.bz2
g-socket.ads, [...] (Close_Selector): Once the signalling sockets are closed...
2006-10-31 Thomas Quinot <quinot@adacore.com> * g-socket.ads, g-socket.adb (Close_Selector): Once the signalling sockets are closed, reset the R_Sig_Socket and W_Sig_Socket components to No_Socket. (Selector_Type): Add default value of No_Socket for R_Sig_Socket and W_Sig_Socket. From-SVN: r118280
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/g-socket.adb8
-rw-r--r--gcc/ada/g-socket.ads11
2 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ada/g-socket.adb b/gcc/ada/g-socket.adb
index f3ebfa3..01765a7 100644
--- a/gcc/ada/g-socket.adb
+++ b/gcc/ada/g-socket.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2005, AdaCore --
+-- Copyright (C) 2001-2006, AdaCore --
-- --
-- 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- --
@@ -560,6 +560,12 @@ package body GNAT.Sockets is
when Socket_Error =>
null;
end;
+
+ -- Reset R_Sig_Socket and W_Sig_Socket to No_Socket to ensure that any
+ -- (errneous) subsequent attempt to use this selector properly fails.
+
+ Selector.R_Sig_Socket := No_Socket;
+ Selector.W_Sig_Socket := No_Socket;
end Close_Selector;
------------------
diff --git a/gcc/ada/g-socket.ads b/gcc/ada/g-socket.ads
index 6268545..3e974a2 100644
--- a/gcc/ada/g-socket.ads
+++ b/gcc/ada/g-socket.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2005, AdaCore --
+-- Copyright (C) 2001-2006, AdaCore --
-- --
-- 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- --
@@ -961,7 +961,10 @@ package GNAT.Sockets is
-- Create a new selector
procedure Close_Selector (Selector : in out Selector_Type);
- -- Close Selector and all internal descriptors associated
+ -- Close Selector and all internal descriptors associated; deallocate any
+ -- associated resources. This subprogram may be called only when there is
+ -- no other task still using Selector (i.e. still executing Check_Selector
+ -- or Abort_Selector on this Selector).
type Selector_Status is (Completed, Expired, Aborted);
@@ -1007,8 +1010,8 @@ private
No_Socket : constant Socket_Type := -1;
type Selector_Type is limited record
- R_Sig_Socket : Socket_Type;
- W_Sig_Socket : Socket_Type;
+ R_Sig_Socket : Socket_Type := No_Socket;
+ W_Sig_Socket : Socket_Type := No_Socket;
end record;
pragma Volatile (Selector_Type);