aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
authorDmitry Antipov2013-09-24 10:43:20 +0400
committerDmitry Antipov2013-09-24 10:43:20 +0400
commitd6d9cbc15cbebfe466756a7a75601173c15287a2 (patch)
tree2f3e5223e8f8d637dc9c3c152929b879748b7918 /src/process.c
parentec7bc82f9c63b6ec533f7489e67b1c1b18d08dd5 (diff)
downloademacs-d6d9cbc15cbebfe466756a7a75601173c15287a2.tar.gz
emacs-d6d9cbc15cbebfe466756a7a75601173c15287a2.zip
Use union for the payload of struct Lisp_Vector.
This helps to avoid a few glitches dictated by C's aliasing rules. * lisp.h (struct Lisp_Vector): Use union for next and contents member. Adjust comment. Change related users. * alloc.c (next_in_free_list, set_next_in_free_list): Remove. Related users changed. * buffer.c, bytecode.c, ccl.c, character.h, chartab.c, composite.c: * composite.h, disptab.h, fns.c, fontset.c, indent.c, keyboard.c: * lread.c, msdos.c, process.c, w32menu.c, window.c, xdisp.c: * xfaces.c, xfont.c, xmenu.c: Related users changed.
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/process.c b/src/process.c
index 94f59942a61..fcaa7894779 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1333,15 +1333,15 @@ Returns nil if format of ADDRESS is invalid. */)
1333 1333
1334 for (i = 0; i < nargs; i++) 1334 for (i = 0; i < nargs; i++)
1335 { 1335 {
1336 if (! RANGED_INTEGERP (0, p->contents[i], 65535)) 1336 if (! RANGED_INTEGERP (0, p->u.contents[i], 65535))
1337 return Qnil; 1337 return Qnil;
1338 1338
1339 if (nargs <= 5 /* IPv4 */ 1339 if (nargs <= 5 /* IPv4 */
1340 && i < 4 /* host, not port */ 1340 && i < 4 /* host, not port */
1341 && XINT (p->contents[i]) > 255) 1341 && XINT (p->u.contents[i]) > 255)
1342 return Qnil; 1342 return Qnil;
1343 1343
1344 args[i+1] = p->contents[i]; 1344 args[i+1] = p->u.contents[i];
1345 } 1345 }
1346 1346
1347 return Fformat (nargs+1, args); 1347 return Fformat (nargs+1, args);
@@ -1980,7 +1980,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
1980 len = sizeof (sin->sin_addr) + 1; 1980 len = sizeof (sin->sin_addr) + 1;
1981 address = Fmake_vector (make_number (len), Qnil); 1981 address = Fmake_vector (make_number (len), Qnil);
1982 p = XVECTOR (address); 1982 p = XVECTOR (address);
1983 p->contents[--len] = make_number (ntohs (sin->sin_port)); 1983 p->u.contents[--len] = make_number (ntohs (sin->sin_port));
1984 cp = (unsigned char *) &sin->sin_addr; 1984 cp = (unsigned char *) &sin->sin_addr;
1985 break; 1985 break;
1986 } 1986 }
@@ -1992,9 +1992,9 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
1992 len = sizeof (sin6->sin6_addr)/2 + 1; 1992 len = sizeof (sin6->sin6_addr)/2 + 1;
1993 address = Fmake_vector (make_number (len), Qnil); 1993 address = Fmake_vector (make_number (len), Qnil);
1994 p = XVECTOR (address); 1994 p = XVECTOR (address);
1995 p->contents[--len] = make_number (ntohs (sin6->sin6_port)); 1995 p->u.contents[--len] = make_number (ntohs (sin6->sin6_port));
1996 for (i = 0; i < len; i++) 1996 for (i = 0; i < len; i++)
1997 p->contents[i] = make_number (ntohs (ip6[i])); 1997 p->u.contents[i] = make_number (ntohs (ip6[i]));
1998 return address; 1998 return address;
1999 } 1999 }
2000#endif 2000#endif
@@ -2019,7 +2019,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
2019 2019
2020 i = 0; 2020 i = 0;
2021 while (i < len) 2021 while (i < len)
2022 p->contents[i++] = make_number (*cp++); 2022 p->u.contents[i++] = make_number (*cp++);
2023 2023
2024 return address; 2024 return address;
2025} 2025}
@@ -2090,7 +2090,7 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
2090 { 2090 {
2091 struct sockaddr_in *sin = (struct sockaddr_in *) sa; 2091 struct sockaddr_in *sin = (struct sockaddr_in *) sa;
2092 len = sizeof (sin->sin_addr) + 1; 2092 len = sizeof (sin->sin_addr) + 1;
2093 hostport = XINT (p->contents[--len]); 2093 hostport = XINT (p->u.contents[--len]);
2094 sin->sin_port = htons (hostport); 2094 sin->sin_port = htons (hostport);
2095 cp = (unsigned char *)&sin->sin_addr; 2095 cp = (unsigned char *)&sin->sin_addr;
2096 sa->sa_family = family; 2096 sa->sa_family = family;
@@ -2101,12 +2101,12 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
2101 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa; 2101 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) sa;
2102 uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr; 2102 uint16_t *ip6 = (uint16_t *)&sin6->sin6_addr;
2103 len = sizeof (sin6->sin6_addr) + 1; 2103 len = sizeof (sin6->sin6_addr) + 1;
2104 hostport = XINT (p->contents[--len]); 2104 hostport = XINT (p->u.contents[--len]);
2105 sin6->sin6_port = htons (hostport); 2105 sin6->sin6_port = htons (hostport);
2106 for (i = 0; i < len; i++) 2106 for (i = 0; i < len; i++)
2107 if (INTEGERP (p->contents[i])) 2107 if (INTEGERP (p->u.contents[i]))
2108 { 2108 {
2109 int j = XFASTINT (p->contents[i]) & 0xffff; 2109 int j = XFASTINT (p->u.contents[i]) & 0xffff;
2110 ip6[i] = ntohs (j); 2110 ip6[i] = ntohs (j);
2111 } 2111 }
2112 sa->sa_family = family; 2112 sa->sa_family = family;
@@ -2137,8 +2137,8 @@ conv_lisp_to_sockaddr (int family, Lisp_Object address, struct sockaddr *sa, int
2137 } 2137 }
2138 2138
2139 for (i = 0; i < len; i++) 2139 for (i = 0; i < len; i++)
2140 if (INTEGERP (p->contents[i])) 2140 if (INTEGERP (p->u.contents[i]))
2141 *cp++ = XFASTINT (p->contents[i]) & 0xff; 2141 *cp++ = XFASTINT (p->u.contents[i]) & 0xff;
2142} 2142}
2143 2143
2144#ifdef DATAGRAM_SOCKETS 2144#ifdef DATAGRAM_SOCKETS
@@ -3729,7 +3729,7 @@ FLAGS is the current flags of the interface. */)
3729 3729
3730 any = 1; 3730 any = 1;
3731 for (n = 0; n < 6; n++) 3731 for (n = 0; n < 6; n++)
3732 p->contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]); 3732 p->u.contents[n] = make_number (((unsigned char *)&rq.ifr_hwaddr.sa_data[0])[n]);
3733 elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr); 3733 elt = Fcons (make_number (rq.ifr_hwaddr.sa_family), hwaddr);
3734 } 3734 }
3735#elif defined (HAVE_GETIFADDRS) && defined (LLADDR) 3735#elif defined (HAVE_GETIFADDRS) && defined (LLADDR)