Fix BUF_* macros to handle indirect buffers properly (Bug#8219).
authorChong Yidong <cyd@stupidchicken.com>
Sun, 13 Mar 2011 22:25:16 +0000 (18:25 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 13 Mar 2011 22:25:16 +0000 (18:25 -0400)
commitcffc6f3bd9b5dbb9825502928bd9dd58ddbac02e
treeab220f926b665ef94b698e925d442e75aadfa864
parenteebc475df54de7ad5c04ef7cddc083c865235540
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.
src/ChangeLog
src/buffer.c
src/buffer.h
src/insdel.c
src/intervals.c
src/lread.c
src/xdisp.c