mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-20 07:38:54 +02:00
Ensure we're actually initializing the winsock library
It turns out that just calling g_inet_address_get_type() isn't enough, since its marked G_GNUC_CONST, so the call is optimized away. If we assign the return value to a volatile location we ensure it is called.
This commit is contained in:
@@ -311,6 +311,7 @@ g_inet_address_new_from_string (const gchar *string)
|
|||||||
struct sockaddr_storage sa;
|
struct sockaddr_storage sa;
|
||||||
struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
|
struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
|
||||||
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
|
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
|
||||||
|
volatile GType type;
|
||||||
gint len;
|
gint len;
|
||||||
#else /* !G_OS_WIN32 */
|
#else /* !G_OS_WIN32 */
|
||||||
struct in_addr in_addr;
|
struct in_addr in_addr;
|
||||||
@@ -318,7 +319,7 @@ g_inet_address_new_from_string (const gchar *string)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Make sure _g_networking_init() has been called */
|
/* Make sure _g_networking_init() has been called */
|
||||||
(void) g_inet_address_get_type ();
|
type = g_inet_address_get_type ();
|
||||||
|
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
memset (&sa, 0, sizeof (sa));
|
memset (&sa, 0, sizeof (sa));
|
||||||
|
Reference in New Issue
Block a user