aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKim F. Storm2004-09-29 14:23:21 +0000
committerKim F. Storm2004-09-29 14:23:21 +0000
commit0e9e9a2cc4ff7d30f55124427aafa07a36162416 (patch)
treee0b2e5303827efbad8cd134722496325e630de44 /src
parentad67849eb360efba2796cf45161f3067ca5d9e48 (diff)
downloademacs-0e9e9a2cc4ff7d30f55124427aafa07a36162416.tar.gz
emacs-0e9e9a2cc4ff7d30f55124427aafa07a36162416.zip
(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.
Diffstat (limited to 'src')
-rw-r--r--src/w32term.c17
1 files 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. */
62 62
63/* Fringe bitmaps. */ 63/* Fringe bitmaps. */
64 64
65static HBITMAP fringe_bmp[MAX_FRINGE_BITMAPS]; 65static int max_fringe_bmp = 0;
66static HBITMAP *fringe_bmp = 0;
66 67
67/* Non-nil means Emacs uses toolkit scroll bars. */ 68/* Non-nil means Emacs uses toolkit scroll bars. */
68 69
@@ -704,7 +705,7 @@ w32_draw_fringe_bitmap (w, row, p)
704 p->bx, p->by, p->nx, p->ny); 705 p->bx, p->by, p->nx, p->ny);
705 } 706 }
706 707
707 if (p->which) 708 if (p->which && p->which < max_fringe_bmp)
708 { 709 {
709 HBITMAP pixmap = fringe_bmp[p->which]; 710 HBITMAP pixmap = fringe_bmp[p->which];
710 HDC compat_hdc; 711 HDC compat_hdc;
@@ -767,6 +768,15 @@ w32_define_fringe_bitmap (which, bits, h, wd)
767 unsigned short *bits; 768 unsigned short *bits;
768 int h, wd; 769 int h, wd;
769{ 770{
771 if (which >= max_fringe_bmp)
772 {
773 int i = max_fringe_bmp;
774 max_fringe_bmp = which + 20;
775 fringe_bmp = (HBITMAP *) xrealloc (fringe_bmp, max_fringe_bmp * sizeof (HBITMAP));
776 while (i < max_fringe_bmp)
777 fringe_bmp[i++] = 0;
778 }
779
770 fringe_bmp[which] = CreateBitmap (wd, h, 1, 1, bits); 780 fringe_bmp[which] = CreateBitmap (wd, h, 1, 1, bits);
771} 781}
772 782
@@ -774,6 +784,9 @@ static void
774w32_destroy_fringe_bitmap (which) 784w32_destroy_fringe_bitmap (which)
775 int which; 785 int which;
776{ 786{
787 if (which >= max_fringe_bmp)
788 return;
789
777 if (fringe_bmp[which]) 790 if (fringe_bmp[which])
778 DeleteObject (fringe_bmp[which]); 791 DeleteObject (fringe_bmp[which]);
779 fringe_bmp[which] = 0; 792 fringe_bmp[which] = 0;