aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/libgnat/g-sothco.adb9
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));