aboutsummaryrefslogtreecommitdiffstats
path: root/src/intervals.c
diff options
context:
space:
mode:
authorChong Yidong2011-03-19 12:42:53 -0400
committerChong Yidong2011-03-19 12:42:53 -0400
commit20f5695598d3137257e24802479d003ea82eb5f9 (patch)
treedbd65b250aa1d524b0a0864bfda2e99465a0c9a4 /src/intervals.c
parent576bce32675146e772183647c4750c1f5f9b7de7 (diff)
downloademacs-20f5695598d3137257e24802479d003ea82eb5f9.tar.gz
emacs-20f5695598d3137257e24802479d003ea82eb5f9.zip
Backport fix for Bug#8219 from trunk.
* 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/intervals.c')
-rw-r--r--src/intervals.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/intervals.c b/src/intervals.c
index d47888b237c..fd8f3f55479 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1949,8 +1949,7 @@ temp_set_point_both (struct buffer *buffer,
1949 if (charpos > BUF_ZV (buffer) || charpos < BUF_BEGV (buffer)) 1949 if (charpos > BUF_ZV (buffer) || charpos < BUF_BEGV (buffer))
1950 abort (); 1950 abort ();
1951 1951
1952 BUF_PT_BYTE (buffer) = bytepos; 1952 SET_BUF_PT_BOTH (buffer, charpos, bytepos);
1953 BUF_PT (buffer) = charpos;
1954} 1953}
1955 1954
1956/* Set point in BUFFER to CHARPOS. If the target position is 1955/* Set point in BUFFER to CHARPOS. If the target position is
@@ -2366,10 +2365,9 @@ get_local_map (position, buffer, type)
2366 old_zv = BUF_ZV (buffer); 2365 old_zv = BUF_ZV (buffer);
2367 old_begv_byte = BUF_BEGV_BYTE (buffer); 2366 old_begv_byte = BUF_BEGV_BYTE (buffer);
2368 old_zv_byte = BUF_ZV_BYTE (buffer); 2367 old_zv_byte = BUF_ZV_BYTE (buffer);
2369 BUF_BEGV (buffer) = BUF_BEG (buffer); 2368
2370 BUF_ZV (buffer) = BUF_Z (buffer); 2369 SET_BUF_BEGV_BOTH (buffer, BUF_BEG (buffer), BUF_BEG_BYTE (buffer));
2371 BUF_BEGV_BYTE (buffer) = BUF_BEG_BYTE (buffer); 2370 SET_BUF_ZV_BOTH (buffer, BUF_Z (buffer), BUF_Z_BYTE (buffer));
2372 BUF_ZV_BYTE (buffer) = BUF_Z_BYTE (buffer);
2373 2371
2374 XSETFASTINT (lispy_position, position); 2372 XSETFASTINT (lispy_position, position);
2375 XSETBUFFER (lispy_buffer, buffer); 2373 XSETBUFFER (lispy_buffer, buffer);
@@ -2383,10 +2381,8 @@ get_local_map (position, buffer, type)
2383 if (NILP (prop)) 2381 if (NILP (prop))
2384 prop = get_pos_property (lispy_position, type, lispy_buffer); 2382 prop = get_pos_property (lispy_position, type, lispy_buffer);
2385 2383
2386 BUF_BEGV (buffer) = old_begv; 2384 SET_BUF_BEGV_BOTH (buffer, old_begv, old_begv_byte);
2387 BUF_ZV (buffer) = old_zv; 2385 SET_BUF_ZV_BOTH (buffer, old_zv, old_zv_byte);
2388 BUF_BEGV_BYTE (buffer) = old_begv_byte;
2389 BUF_ZV_BYTE (buffer) = old_zv_byte;
2390 2386
2391 /* Use the local map only if it is valid. */ 2387 /* Use the local map only if it is valid. */
2392 prop = get_keymap (prop, 0, 0); 2388 prop = get_keymap (prop, 0, 0);