libpurple/util.c

branch
soc.2008.masterpassword
changeset 34148
62a874e41930
parent 34145
fa72f1e5cd77
parent 33900
f4924591ef06
child 34171
a23f3228c465
--- a/libpurple/util.c	Thu Mar 28 11:20:10 2013 +0100
+++ b/libpurple/util.c	Fri Apr 26 12:27:23 2013 +0200
@@ -166,7 +166,7 @@
 	ascii = g_malloc(len * 2 + 1);
 
 	for (i = 0; i < len; i++)
-		g_snprintf(&ascii[i * 2], 3, "%02hhx", data[i]);
+		g_snprintf(&ascii[i * 2], 3, "%02hx", data[i] & 0xFF);
 
 	return ascii;
 }
@@ -234,7 +234,7 @@
 	ascii = g_malloc(len * 3 + 1);
 
 	for (i = 0; i < len; i++)
-		g_snprintf(&ascii[i * 3], 4, "%02hhx:", data[i]);
+		g_snprintf(&ascii[i * 3], 4, "%02hx:", data[i] & 0xFF);
 
 	/* Replace the final colon with NULL */
 	ascii[len * 3 - 1] = 0;
@@ -3354,7 +3354,7 @@
 	case AF_INET6:
 	{
 		int val = 0;
-		guint len = sizeof(val);
+		socklen_t len = sizeof(val);
 
 		if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val, &len) != 0)
 			return FALSE;
@@ -3753,7 +3753,7 @@
 
 	for (i = 0; i < len; i++)
 		if (binary[i] < 32 || binary[i] > 126)
-			g_string_append_printf(ret, "\\x%02hhx", binary[i]);
+			g_string_append_printf(ret, "\\x%02hx", binary[i] & 0xFF);
 		else if (binary[i] == '\\')
 			g_string_append(ret, "\\\\");
 		else
@@ -4337,7 +4337,11 @@
 const gchar *
 purple_gai_strerror(gint errnum)
 {
+#if GLIB_CHECK_VERSION(2, 32, 0)
+	static GPrivate msg_private = G_PRIVATE_INIT(g_free);
+#else
 	static GStaticPrivate msg_private = G_STATIC_PRIVATE_INIT;
+#endif
 	char *msg;
 	int saved_errno = errno;
 
@@ -4365,11 +4369,19 @@
 		}
 	}
 
+#if GLIB_CHECK_VERSION(2, 32, 0)
+	msg = g_private_get(&msg_private);
+#else
 	msg = g_static_private_get(&msg_private);
+#endif
 	if (!msg)
 	{
 		msg = g_new(gchar, 64);
+#if GLIB_CHECK_VERSION(2, 32, 0)
+		g_private_set(&msg_private, msg);
+#else
 		g_static_private_set(&msg_private, msg, g_free);
+#endif
 	}
 
 	sprintf(msg, "unknown error (%d)", errnum);

mercurial