Commit 89887d67 authored by Andreas Schwab's avatar Andreas Schwab
Browse files

Use offsetof instead of own definition

* lisp.h: Include <stddef.h>.
(OFFSETOF): Don't define.
(VECSIZE): Use offsetof instead of OFFSETOF.
(PSEUDOVECSIZE): Likewise.
* process.c (conv_sockaddr_to_lisp): Likewise.
* alloc.c: Don't include <stddef.h>.
* buffer.h (PER_BUFFER_VAR_OFFSET): Use offsetof.
parent ae96d47a
2010-07-11 Andreas Schwab <schwab@linux-m68k.org> 2010-07-11 Andreas Schwab <schwab@linux-m68k.org>
   
* lisp.h: Include <stddef.h>.
(OFFSETOF): Don't define.
(VECSIZE): Use offsetof instead of OFFSETOF.
(PSEUDOVECSIZE): Likewise.
* process.c (conv_sockaddr_to_lisp): Likewise.
* alloc.c: Don't include <stddef.h>.
* buffer.h (PER_BUFFER_VAR_OFFSET): Use offsetof.
* process.c: Remove obsolete comment. * process.c: Remove obsolete comment.
   
2010-07-11 Chong Yidong <cyd@stupidchicken.com> 2010-07-11 Chong Yidong <cyd@stupidchicken.com>
......
...@@ -23,10 +23,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ ...@@ -23,10 +23,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <limits.h> /* For CHAR_BIT. */ #include <limits.h> /* For CHAR_BIT. */
#include <setjmp.h> #include <setjmp.h>
#ifdef STDC_HEADERS
#include <stddef.h> /* For offsetof, used by PSEUDOVECSIZE. */
#endif
#ifdef ALLOC_DEBUG #ifdef ALLOC_DEBUG
#undef INLINE #undef INLINE
#endif #endif
......
...@@ -954,7 +954,7 @@ extern int last_per_buffer_idx; ...@@ -954,7 +954,7 @@ extern int last_per_buffer_idx;
from the start of a buffer structure. */ from the start of a buffer structure. */
#define PER_BUFFER_VAR_OFFSET(VAR) \ #define PER_BUFFER_VAR_OFFSET(VAR) \
((char *) &((struct buffer *)0)->VAR - (char *) ((struct buffer *)0)) offsetof (struct buffer, VAR)
/* Return the index of buffer-local variable VAR. Each per-buffer /* Return the index of buffer-local variable VAR. Each per-buffer
variable has an index > 0 associated with it, except when it always variable has an index > 0 associated with it, except when it always
......
...@@ -22,6 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ ...@@ -22,6 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define EMACS_LISP_H #define EMACS_LISP_H
#include <stdarg.h> #include <stdarg.h>
#include <stddef.h>
/* Use the configure flag --enable-checking[=LIST] to enable various /* Use the configure flag --enable-checking[=LIST] to enable various
types of run time checks for Lisp objects. */ types of run time checks for Lisp objects. */
...@@ -784,13 +785,6 @@ struct Lisp_String ...@@ -784,13 +785,6 @@ struct Lisp_String
unsigned char *data; unsigned char *data;
}; };
#ifdef offsetof
#define OFFSETOF(type,field) offsetof(type,field)
#else
#define OFFSETOF(type,field) \
((int)((char*)&((type*)0)->field - (char*)0))
#endif
struct Lisp_Vector struct Lisp_Vector
{ {
EMACS_UINT size; EMACS_UINT size;
...@@ -801,7 +795,7 @@ struct Lisp_Vector ...@@ -801,7 +795,7 @@ struct Lisp_Vector
/* If a struct is made to look like a vector, this macro returns the length /* If a struct is made to look like a vector, this macro returns the length
of the shortest vector that would hold that struct. */ of the shortest vector that would hold that struct. */
#define VECSIZE(type) ((sizeof (type) \ #define VECSIZE(type) ((sizeof (type) \
- OFFSETOF (struct Lisp_Vector, contents[0]) \ - offsetof (struct Lisp_Vector, contents[0]) \
+ sizeof(Lisp_Object) - 1) /* round up */ \ + sizeof(Lisp_Object) - 1) /* round up */ \
/ sizeof (Lisp_Object)) / sizeof (Lisp_Object))
...@@ -809,7 +803,7 @@ struct Lisp_Vector ...@@ -809,7 +803,7 @@ struct Lisp_Vector
at the end and we need to compute the number of Lisp_Object fields (the at the end and we need to compute the number of Lisp_Object fields (the
ones that the GC needs to trace). */ ones that the GC needs to trace). */
#define PSEUDOVECSIZE(type, nonlispfield) \ #define PSEUDOVECSIZE(type, nonlispfield) \
((OFFSETOF(type, nonlispfield) - OFFSETOF(struct Lisp_Vector, contents[0])) \ ((offsetof(type, nonlispfield) - offsetof(struct Lisp_Vector, contents[0])) \
/ sizeof (Lisp_Object)) / sizeof (Lisp_Object))
/* A char-table is a kind of vectorlike, with contents are like a /* A char-table is a kind of vectorlike, with contents are like a
......
...@@ -2263,7 +2263,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) ...@@ -2263,7 +2263,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
/* Workaround for a bug in getsockname on BSD: Names bound to /* Workaround for a bug in getsockname on BSD: Names bound to
sockets in the UNIX domain are inaccessible; getsockname returns sockets in the UNIX domain are inaccessible; getsockname returns
a zero length name. */ a zero length name. */
if (len < OFFSETOF (struct sockaddr, sa_family) + sizeof (sa->sa_family)) if (len < offsetof (struct sockaddr, sa_family) + sizeof (sa->sa_family))
return empty_unibyte_string; return empty_unibyte_string;
switch (sa->sa_family) switch (sa->sa_family)
...@@ -2303,7 +2303,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len) ...@@ -2303,7 +2303,7 @@ conv_sockaddr_to_lisp (struct sockaddr *sa, int len)
} }
#endif #endif
default: default:
len -= OFFSETOF (struct sockaddr, sa_family) + sizeof (sa->sa_family); len -= offsetof (struct sockaddr, sa_family) + sizeof (sa->sa_family);
address = Fcons (make_number (sa->sa_family), address = Fcons (make_number (sa->sa_family),
Fmake_vector (make_number (len), Qnil)); Fmake_vector (make_number (len), Qnil));
p = XVECTOR (XCDR (address)); p = XVECTOR (XCDR (address));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment