aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/region-cache.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index eb19fad9abe..20e5e4bdfbb 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12012-08-15 Eli Zaretskii <eliz@gnu.org>
2
3 * region-cache.c (move_cache_gap): Update gap_len using the actual
4 growth of the boundaries array. Do not change cache_len.
5 (Bug#12196)
6
12012-08-15 Dmitry Antipov <dmantipov@yandex.ru> 72012-08-15 Dmitry Antipov <dmantipov@yandex.ru>
2 8
3 Generalize and cleanup font subsystem checks. 9 Generalize and cleanup font subsystem checks.
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;