+2010-05-19 Eli Zaretskii <eliz@gnu.org>
+
+ * bidi.c (bidi_cache_shrink, bidi_cache_iterator_state): Fix
+ reallocation of the cache. (Bug#6210)
+
2010-05-19 Glenn Morris <rgm@gnu.org>
* s/msdos.h (ORDINARY_LINK): Move to sed2v2.inp.
#define BIDI_CACHE_CHUNK 200
static struct bidi_it *bidi_cache;
static size_t bidi_cache_size = 0;
+static size_t elsz = sizeof (struct bidi_it);
static int bidi_cache_idx; /* next unused cache slot */
static int bidi_cache_last_idx; /* slot of last cache hit */
{
if (bidi_cache_size > BIDI_CACHE_CHUNK)
{
- bidi_cache_size = BIDI_CACHE_CHUNK * sizeof (struct bidi_it);
- bidi_cache = (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size);
+ bidi_cache_size = BIDI_CACHE_CHUNK;
+ bidi_cache =
+ (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size * elsz);
}
bidi_cache_reset ();
}
/* Enlarge the cache as needed. */
if (idx >= bidi_cache_size)
{
- bidi_cache_size += BIDI_CACHE_CHUNK * sizeof (struct bidi_it);
+ bidi_cache_size += BIDI_CACHE_CHUNK;
bidi_cache =
- (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size);
+ (struct bidi_it *) xrealloc (bidi_cache, bidi_cache_size * elsz);
}
/* Character positions should correspond to cache positions 1:1.
If we are outside the range of cached positions, the cache is