[glib] gio/ginetaddress.c: Fix Windows XP inet_pton() Emulation



commit 3e29dadae46fe4d1e26ff91c30d9d3b84eb6d84e
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Tue Jun 23 13:52:25 2015 +0800

    gio/ginetaddress.c: Fix Windows XP inet_pton() Emulation
    
    We need to be more careful when we try to assign values to gpointers, so
    that means we have to assign the value to the properly-dereference
    gpointer, so that the assigned value will be retained after the function
    returns.  This code will be dropped soon, but it is done for XP
    compatibility's sake for 2.44.
    
    Should fix the issue reported in bug 730352 comment #24.

 gio/ginetaddress.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/gio/ginetaddress.c b/gio/ginetaddress.c
index 8723c28..39610ae 100644
--- a/gio/ginetaddress.c
+++ b/gio/ginetaddress.c
@@ -417,7 +417,8 @@ inet_pton (gint family,
               /* XXX: Figure out when WSAStringToAddress() accepts a IPv4 address but the
                       numbers-and-dots address is actually not complete.  This code will be
                       removed once XP/Server 2003 support is dropped... */
-              addr = &sin->sin_addr;
+              *(IN_ADDR *) addr = sin->sin_addr;
+
               return 1;
             }
         }
@@ -425,7 +426,7 @@ inet_pton (gint family,
         {
           if (WSAStringToAddress ((LPTSTR) addr_string, AF_INET6, NULL, (LPSOCKADDR) &sa, &len) == 0)
             {
-              addr = &sin6->sin6_addr;
+              *(IN6_ADDR *) addr = sin6->sin6_addr;
               return 1;
             }
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]