diff options
| author | Dmitry Antipov | 2013-09-24 10:43:20 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2013-09-24 10:43:20 +0400 |
| commit | d6d9cbc15cbebfe466756a7a75601173c15287a2 (patch) | |
| tree | 2f3e5223e8f8d637dc9c3c152929b879748b7918 /src/process.c | |
| parent | ec7bc82f9c63b6ec533f7489e67b1c1b18d08dd5 (diff) | |
| download | emacs-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.c | 28 |
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) |