aboutsummaryrefslogtreecommitdiffstats
path: root/src/lread.c
diff options
context:
space:
mode:
authorChong Yidong2011-03-13 18:25:16 -0400
committerChong Yidong2011-03-13 18:25:16 -0400
commitcffc6f3bd9b5dbb9825502928bd9dd58ddbac02e (patch)
treeab220f926b665ef94b698e925d442e75aadfa864 /src/lread.c
parenteebc475df54de7ad5c04ef7cddc083c865235540 (diff)
downloademacs-cffc6f3bd9b5dbb9825502928bd9dd58ddbac02e.tar.gz
emacs-cffc6f3bd9b5dbb9825502928bd9dd58ddbac02e.zip
Fix BUF_* macros to handle indirect buffers properly (Bug#8219).
* buffer.h (BUF_BEGV, BUF_BEGV_BYTE, BUF_ZV, BUF_ZV_BYTE, BUF_PT) (BUF_PT_BYTE): Rewrite to handle indirect buffers (Bug#8219). These macros can no longer be used for assignment. * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Assign struct members directly, instead of using BUF_BEGV etc. (record_buffer_markers, fetch_buffer_markers): New functions for recording and fetching special buffer markers. (set_buffer_internal_1, set_buffer_temp): Use them. * lread.c (unreadchar): Use SET_BUF_PT_BOTH. * insdel.c (adjust_point): Use SET_BUF_PT_BOTH. * intervals.c (temp_set_point_both): Use SET_BUF_PT_BOTH. (get_local_map): Use SET_BUF_BEGV_BOTH and SET_BUF_ZV_BOTH. * xdisp.c (hscroll_window_tree): (reconsider_clip_changes): Use PT instead of BUF_PT.
Diffstat (limited to 'src/lread.c')
-rw-r--r--src/lread.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lread.c b/src/lread.c
index 8a5f6ecd691..3c5b627f98c 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -368,15 +368,15 @@ unreadchar (Lisp_Object readcharfun, int c)
368 else if (BUFFERP (readcharfun)) 368 else if (BUFFERP (readcharfun))
369 { 369 {
370 struct buffer *b = XBUFFER (readcharfun); 370 struct buffer *b = XBUFFER (readcharfun);
371 EMACS_INT charpos = BUF_PT (b);
371 EMACS_INT bytepos = BUF_PT_BYTE (b); 372 EMACS_INT bytepos = BUF_PT_BYTE (b);
372 373
373 BUF_PT (b)--;
374 if (! NILP (BVAR (b, enable_multibyte_characters))) 374 if (! NILP (BVAR (b, enable_multibyte_characters)))
375 BUF_DEC_POS (b, bytepos); 375 BUF_DEC_POS (b, bytepos);
376 else 376 else
377 bytepos--; 377 bytepos--;
378 378
379 BUF_PT_BYTE (b) = bytepos; 379 SET_BUF_PT_BOTH (b, charpos - 1, bytepos);
380 } 380 }
381 else if (MARKERP (readcharfun)) 381 else if (MARKERP (readcharfun))
382 { 382 {