aboutsummaryrefslogtreecommitdiffstats
path: root/src/region-cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/region-cache.c')
-rw-r--r--src/region-cache.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/region-cache.c b/src/region-cache.c
index 14b6233a5a5..d2bba8c11b2 100644
--- a/src/region-cache.c
+++ b/src/region-cache.c
@@ -245,16 +245,16 @@ move_cache_gap (struct region_cache *c, ptrdiff_t pos, ptrdiff_t min_size)
245 when the portion after the gap is smallest. */ 245 when the portion after the gap is smallest. */
246 if (gap_len < min_size) 246 if (gap_len < min_size)
247 { 247 {
248 ptrdiff_t i; 248 ptrdiff_t i, nboundaries = c->cache_len;
249 249
250 c->boundaries = 250 c->boundaries =
251 xpalloc (c->boundaries, &c->cache_len, min_size, -1, 251 xpalloc (c->boundaries, &nboundaries, min_size - gap_len, -1,
252 sizeof *c->boundaries); 252 sizeof *c->boundaries);
253 253
254 /* Some systems don't provide a version of the copy routine that 254 /* Some systems don't provide a version of the copy routine that
255 can be trusted to shift memory upward into an overlapping 255 can be trusted to shift memory upward into an overlapping
256 region. memmove isn't widely available. */ 256 region. memmove isn't widely available. */
257 min_size -= gap_len; 257 min_size = nboundaries - c->cache_len - gap_len;
258 for (i = c->cache_len - 1; i >= gap_start; i--) 258 for (i = c->cache_len - 1; i >= gap_start; i--)
259 { 259 {
260 c->boundaries[i + min_size].pos = c->boundaries[i + gap_len].pos; 260 c->boundaries[i + min_size].pos = c->boundaries[i + gap_len].pos;