* 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.
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.
2010-07-11 Chong Yidong <cyd@stupidchicken.com>
#include <limits.h> /* For CHAR_BIT. */
#include <setjmp.h>
-#ifdef STDC_HEADERS
-#include <stddef.h> /* For offsetof, used by PSEUDOVECSIZE. */
-#endif
-
#ifdef ALLOC_DEBUG
#undef INLINE
#endif
from the start of a buffer structure. */
#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
variable has an index > 0 associated with it, except when it always
#define EMACS_LISP_H
#include <stdarg.h>
+#include <stddef.h>
/* Use the configure flag --enable-checking[=LIST] to enable various
types of run time checks for Lisp objects. */
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
{
EMACS_UINT size;
/* If a struct is made to look like a vector, this macro returns the length
of the shortest vector that would hold that struct. */
#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))
at the end and we need to compute the number of Lisp_Object fields (the
ones that the GC needs to trace). */
#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))
/* A char-table is a kind of vectorlike, with contents are like a
/* Workaround for a bug in getsockname on BSD: Names bound to
sockets in the UNIX domain are inaccessible; getsockname returns
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;
switch (sa->sa_family)
}
#endif
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),
Fmake_vector (make_number (len), Qnil));
p = XVECTOR (XCDR (address));