From 0e9e9a2cc4ff7d30f55124427aafa07a36162416 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 29 Sep 2004 14:23:21 +0000 Subject: [PATCH] (fringe_bmp): Change to pointer. (max_fringe_bmp): New var. (w32_define_fringe_bitmap): Expand fringe_bmp. (w32_draw_fringe_bitmap): Check max_fringe_bmp. (w32_destroy_fringe_bitmap): Likewise. --- src/w32term.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/w32term.c b/src/w32term.c index f71736dffad..22d139d9252 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -62,7 +62,8 @@ Boston, MA 02111-1307, USA. */ /* Fringe bitmaps. */ -static HBITMAP fringe_bmp[MAX_FRINGE_BITMAPS]; +static int max_fringe_bmp = 0; +static HBITMAP *fringe_bmp = 0; /* Non-nil means Emacs uses toolkit scroll bars. */ @@ -704,7 +705,7 @@ w32_draw_fringe_bitmap (w, row, p) p->bx, p->by, p->nx, p->ny); } - if (p->which) + if (p->which && p->which < max_fringe_bmp) { HBITMAP pixmap = fringe_bmp[p->which]; HDC compat_hdc; @@ -767,6 +768,15 @@ w32_define_fringe_bitmap (which, bits, h, wd) unsigned short *bits; int h, wd; { + if (which >= max_fringe_bmp) + { + int i = max_fringe_bmp; + max_fringe_bmp = which + 20; + fringe_bmp = (HBITMAP *) xrealloc (fringe_bmp, max_fringe_bmp * sizeof (HBITMAP)); + while (i < max_fringe_bmp) + fringe_bmp[i++] = 0; + } + fringe_bmp[which] = CreateBitmap (wd, h, 1, 1, bits); } @@ -774,6 +784,9 @@ static void w32_destroy_fringe_bitmap (which) int which; { + if (which >= max_fringe_bmp) + return; + if (fringe_bmp[which]) DeleteObject (fringe_bmp[which]); fringe_bmp[which] = 0; -- 2.39.2