diff options
| author | Chong Yidong | 2011-03-13 18:25:16 -0400 |
|---|---|---|
| committer | Chong Yidong | 2011-03-13 18:25:16 -0400 |
| commit | cffc6f3bd9b5dbb9825502928bd9dd58ddbac02e (patch) | |
| tree | ab220f926b665ef94b698e925d442e75aadfa864 /src/lread.c | |
| parent | eebc475df54de7ad5c04ef7cddc083c865235540 (diff) | |
| download | emacs-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.c | 4 |
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 | { |