diff options
author | Dmitriy Anisimkov <anisimko@adacore.com> | 2019-07-01 13:34:34 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2019-07-01 13:34:34 +0000 |
commit | 7c46e926fa592e2df23d260791cde72162bfc10c (patch) | |
tree | 1cba8c7d6e49d20c7ebc3a405c55be10510f0600 | |
parent | 6a04c943908a9302683dd16b59fc72419ebd54b0 (diff) | |
download | gcc-7c46e926fa592e2df23d260791cde72162bfc10c.zip gcc-7c46e926fa592e2df23d260791cde72162bfc10c.tar.gz gcc-7c46e926fa592e2df23d260791cde72162bfc10c.tar.bz2 |
[Ada] GNAT.Sockets: fix Get_Address when AF_INET6 is not defined
2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com>
gcc/ada/
* libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6
is not defined.
From-SVN: r272856
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/libgnat/g-sothco.adb | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 82e808b..1d353e8 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2019-07-01 Dmitriy Anisimkov <anisimko@adacore.com> + + * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6 + is not defined. + 2019-07-01 Ed Schonberg <schonberg@adacore.com> * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value): diff --git a/gcc/ada/libgnat/g-sothco.adb b/gcc/ada/libgnat/g-sothco.adb index df82d01..eb15ac2 100644 --- a/gcc/ada/libgnat/g-sothco.adb +++ b/gcc/ada/libgnat/g-sothco.adb @@ -59,14 +59,15 @@ package body GNAT.Sockets.Thin_Common is ----------------- function Get_Address (Sin : Sockaddr) return Sock_Addr_Type is + use type C.unsigned_short; Family : constant C.unsigned_short := (if SOSC.Has_Sockaddr_Len = 0 then Sin.Sin_Family.Short_Family else C.unsigned_short (Sin.Sin_Family.Char_Family)); + AF_INET6_Defined : constant Boolean := SOSC.AF_INET6 > 0; Result : Sock_Addr_Type - (case Family is - when SOSC.AF_INET6 => Family_Inet6, - when SOSC.AF_INET => Family_Inet, - when others => Family_Unspec); + (if AF_INET6_Defined and then SOSC.AF_INET6 = Family then Family_Inet6 + elsif SOSC.AF_INET = Family then Family_Inet + else Family_Unspec); begin Result.Port := Port_Type (Network_To_Short (Sin.Sin_Port)); |