From 35928349678bc6ed8f621fe7d4da6a9a3fb3579d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 5 Aug 2011 13:48:37 +0300 Subject: Fix bug #9221 with resource allocation under word-wrap. Add diagnostic facility for monitoring memory allocated for cache shelving. src/xdisp.c (display_line): Release buffer allocated for shelved bidi cache. (Bug#9221) src/bidi.c (bidi_shelve_cache, bidi_unshelve_cache): Track total amount allocated this far in `bidi_cache_total_alloc'. (bidi_unshelve_cache): Accept an additional argument JUST_FREE; if non-zero, only free the data buffer without restoring the cache contents. All callers changed. src/dispextern.h (bidi_unshelve_cache): Update prototype. src/xdisp.c (SAVE_IT, pos_visible_p, move_it_in_display_line_to) (move_it_in_display_line, move_it_to) (move_it_vertically_backward, move_it_by_lines): Replace the call to xfree to an equivalent call to bidi_unshelve_cache. (move_it_in_display_line_to): Fix logic of returning MOVE_POS_MATCH_OR_ZV in the bidi case. --- src/dispextern.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/dispextern.h') diff --git a/src/dispextern.h b/src/dispextern.h index 5bb72ff760..32b4bbfab2 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -2975,7 +2975,7 @@ extern int bidi_mirror_char (int); extern void bidi_push_it (struct bidi_it *); extern void bidi_pop_it (struct bidi_it *); extern void *bidi_shelve_cache (void); -extern void bidi_unshelve_cache (void *); +extern void bidi_unshelve_cache (void *, int); /* Defined in xdisp.c */ -- cgit v1.2.3