diff options
Diffstat (limited to 'gcc')
-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)); |