From ad98c85e5b31557702533ffe9fe8109ba642705c Mon Sep 17 00:00:00 2001 From: Thomas Quinot Date: Tue, 31 Oct 2006 19:00:42 +0100 Subject: [PATCH] g-socket.ads, [...] (Close_Selector): Once the signalling sockets are closed... 2006-10-31 Thomas Quinot * 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 --- gcc/ada/g-socket.adb | 8 +++++++- gcc/ada/g-socket.ads | 11 +++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gcc/ada/g-socket.adb b/gcc/ada/g-socket.adb index f3ebfa36c8f..01765a70715 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 6268545a5fa..3e974a213ab 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); -- 2.30.2