libpurple/protocols/gg/lib/events.c

branch
release-2.x.y
changeset 35685
703d7d7bdf60
parent 35645
0143226782bb
child 35686
cae91a875b23
child 36284
20467cdcdbdd
--- a/libpurple/protocols/gg/lib/events.c	Tue Apr 01 00:00:26 2014 +0200
+++ b/libpurple/protocols/gg/lib/events.c	Thu Apr 03 14:48:56 2014 +0200
@@ -588,6 +588,7 @@
 	int count = -1;
 	int res;
 	unsigned int i;
+	struct in_addr *addrs;
 
 	res = gg_resolver_recv(sess->fd, buf, sizeof(buf));
 
@@ -622,8 +623,10 @@
 
 	/* Sprawdź, czy mamy listę zakończoną INADDR_NONE */
 
+	addrs = (struct in_addr *)(void *)sess->recv_buf;
+
 	for (i = 0; i < sess->recv_done / sizeof(struct in_addr); i++) {
-		if (((struct in_addr*) sess->recv_buf)[i].s_addr == INADDR_NONE) {
+		if (addrs[i].s_addr == INADDR_NONE) {
 			count = i;
 			break;
 		}
@@ -661,7 +664,7 @@
 			if (i > 0)
 				len += 2;
 
-			len += strlen(inet_ntoa(((struct in_addr*) sess->recv_buf)[i]));
+			len += strlen(inet_ntoa(addrs[i]));
 		}
 
 		list = malloc(len + 1);
@@ -675,7 +678,7 @@
 			if (i > 0)
 				strcat(list, ", ");
 
-			strcat(list, inet_ntoa(((struct in_addr*) sess->recv_buf)[i]));
+			strcat(list, inet_ntoa(addrs[i]));
 		}
 
 		gg_debug_session(sess, GG_DEBUG_DUMP, "// gg_watch_fd() resolved: %s\n", list);
@@ -687,7 +690,7 @@
 	gg_close(sess);
 
 	sess->state = next_state;
-	sess->resolver_result = (struct in_addr*) sess->recv_buf;
+	sess->resolver_result = addrs;
 	sess->resolver_count = count;
 	sess->resolver_index = 0;
 	sess->recv_buf = NULL;

mercurial