aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-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);