aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGlenn Morris2011-01-24 19:47:47 -0800
committerGlenn Morris2011-01-24 19:47:47 -0800
commit06d8ace51597cd41e110560a56a1abeb6cce23d6 (patch)
treee893bab169f27821637fc07e3cd2414b4b9b7b68 /src
parentc5ecc7690d4afafb42049634d64abd781ff76642 (diff)
parent0d19d4feaa653a315853716e64bbaddb210a26ca (diff)
downloademacs-06d8ace51597cd41e110560a56a1abeb6cce23d6.tar.gz
emacs-06d8ace51597cd41e110560a56a1abeb6cce23d6.zip
Merge from emacs-23.
Note setting of CANNOT_DUMP on ia64 hpux is still to be merged manually.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog10
-rw-r--r--src/lisp.h31
-rw-r--r--src/xdisp.c9
3 files changed, 33 insertions, 17 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 134e289681c..3776682c692 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
12011-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * xdisp.c (handle_fontified_prop): Be careful with font-lock changing
4 the buffer's point-max (bug#7876).
5
62011-01-25 Chong Yidong <cyd@stupidchicken.com>
7
8 * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases.
9 Remove unused case (Bug#6811).
10
12011-01-23 Jan Djärv <jan.h.d@swipnet.se> 112011-01-23 Jan Djärv <jan.h.d@swipnet.se>
2 12
3 * nsterm.m (x_set_offset): Set dont_constrain to 0 so the call to 13 * nsterm.m (x_set_offset): Set dont_constrain to 0 so the call to
diff --git a/src/lisp.h b/src/lisp.h
index 64c0b2332e3..c5c047a53cb 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -444,7 +444,13 @@ enum pvec_type
444 ((var) = ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \ 444 ((var) = ((EMACS_INT) ((EMACS_UINT) (type) << VALBITS) \
445 + ((EMACS_INT) (ptr) & VALMASK))) 445 + ((EMACS_INT) (ptr) & VALMASK)))
446 446
447#ifdef DATA_SEG_BITS
448/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
449 which were stored in a Lisp_Object */
450#define XPNTR(a) ((EMACS_UINT) (((a) & VALMASK) | DATA_SEG_BITS))
451#else
447#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK)) 452#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK))
453#endif
448 454
449#endif /* not USE_LSB_TAG */ 455#endif /* not USE_LSB_TAG */
450 456
@@ -482,6 +488,14 @@ enum pvec_type
482# define XSET(var, vartype, ptr) \ 488# define XSET(var, vartype, ptr) \
483 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype)))) 489 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
484 490
491#ifdef DATA_SEG_BITS
492/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
493 which were stored in a Lisp_Object */
494#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
495#else
496#define XPNTR(a) ((EMACS_INT) XUINT (a))
497#endif
498
485#endif /* !USE_LSB_TAG */ 499#endif /* !USE_LSB_TAG */
486 500
487#if __GNUC__ >= 2 && defined (__OPTIMIZE__) 501#if __GNUC__ >= 2 && defined (__OPTIMIZE__)
@@ -503,23 +517,6 @@ extern Lisp_Object make_number (EMACS_INT);
503 517
504#define EQ(x, y) (XHASH (x) == XHASH (y)) 518#define EQ(x, y) (XHASH (x) == XHASH (y))
505 519
506#ifndef XPNTR
507#ifdef DATA_SEG_BITS
508/* This case is used for the rt-pc.
509 In the diffs I was given, it checked for ptr = 0
510 and did not adjust it in that case.
511 But I don't think that zero should ever be found
512 in a Lisp object whose data type says it points to something. */
513#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
514#else
515/* Some versions of gcc seem to consider the bitfield width when
516 issuing the "cast to pointer from integer of different size"
517 warning, so the cast is here to widen the value back to its natural
518 size. */
519#define XPNTR(a) ((EMACS_INT) XUINT (a))
520#endif
521#endif /* no XPNTR */
522
523/* Largest and smallest representable fixnum values. These are the C 520/* Largest and smallest representable fixnum values. These are the C
524 values. */ 521 values. */
525 522
diff --git a/src/xdisp.c b/src/xdisp.c
index 4d0ff88f9a3..09a3cae5754 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -3173,6 +3173,8 @@ handle_fontified_prop (struct it *it)
3173 val = Vfontification_functions; 3173 val = Vfontification_functions;
3174 specbind (Qfontification_functions, Qnil); 3174 specbind (Qfontification_functions, Qnil);
3175 3175
3176 xassert (it->end_charpos == ZV);
3177
3176 if (!CONSP (val) || EQ (XCAR (val), Qlambda)) 3178 if (!CONSP (val) || EQ (XCAR (val), Qlambda))
3177 safe_call1 (val, pos); 3179 safe_call1 (val, pos);
3178 else 3180 else
@@ -3212,6 +3214,13 @@ handle_fontified_prop (struct it *it)
3212 3214
3213 unbind_to (count, Qnil); 3215 unbind_to (count, Qnil);
3214 3216
3217 /* The fontification code may have added/removed text.
3218 It could do even a lot worse, but let's at least protect against
3219 the most obvious case where only the text past `pos' gets changed',
3220 as is/was done in grep.el where some escapes sequences are turned
3221 into face properties (bug#7876). */
3222 it->end_charpos = ZV;
3223
3215 /* Return HANDLED_RECOMPUTE_PROPS only if function fontified 3224 /* Return HANDLED_RECOMPUTE_PROPS only if function fontified
3216 something. This avoids an endless loop if they failed to 3225 something. This avoids an endless loop if they failed to
3217 fontify the text for which reason ever. */ 3226 fontify the text for which reason ever. */