GNU bug report logs -
#8546
fix for Emacs pseudovector incompatibility with GCC 4.6.0
Previous Next
Reported by: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Mon, 25 Apr 2011 07:43:02 UTC
Severity: normal
Done: Paul Eggert <eggert <at> cs.ucla.edu>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 8546 <at> debbugs.gnu.org (full text, mbox):
> The patch is attached. It's against my copy of Emacs, which has a few
> other fixes that I haven't had time to merge to the trunk yet. But it
> should give a good feel for what's involved.
[ Please don't compress patches for review. 57KB is not that large. ]
Thanks for tackling this problem. A few questions/comments on your
patch (which I haven't reviewed completely):
+struct vector_header
I'd call it vectorlike_header.
+ {
+ EMACS_UINT size;
+ union {
+ struct buffer *buffer;
+ struct Lisp_Vector *vector;
+ } next;
+ };
Why do you need to handle buffers specially here? That sounds wrong.
+#define XVECTOR_SIZE(a) (XVECTOR (a)->header.size + 0)
why not use ASIZE?
+#define XVECTOR_HEADER_SIZE(a) (((struct vector_header *) XPNTR (a))->size + 0)
why do we need this variant with this weird set of type casts?
+ * lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
+ special case.
Why does Lisp_Subr need to be a special case (IIUC this applies to
XSETTYPED_PSEUDOVECTOR and TYPED_PSEUDOVECTORP as well).
+#define XSETPVECTYPESIZE(v, code, sizeval) \
+ ((v)->header.size = PSEUDOVECTOR_FLAG | (code) | (sizeval))
Sounds good.
Stefan
This bug report was last modified 14 years and 80 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.