Could you please try reverting your patch and trying out the attached?
It checks for rounding errors explicitly rather than introducing a
one-pixel fuzz value.

Thanks for your help,

                                        Juliusz

Index: xc/lib/font/FreeType/ftfuncs.c
===================================================================
RCS file: /cvs/xc/lib/font/FreeType/ftfuncs.c,v
retrieving revision 1.25
diff -c -r1.25 ftfuncs.c
*** xc/lib/font/FreeType/ftfuncs.c	2002/10/02 15:06:12	1.25
--- xc/lib/font/FreeType/ftfuncs.c	2003/02/12 15:56:42
***************
*** 595,601 ****
          if(wd <= 0) wd = 1;
          if(ht <= 0) ht = 1;
      }
!     /* Note that wd >= bitmap->width and ht >= bitmap->rows */
  
      bpr = (((wd + (instance->bmfmt.glyph<<3) - 1) >> 3) & 
             -instance->bmfmt.glyph);
--- 595,606 ----
          if(wd <= 0) wd = 1;
          if(ht <= 0) ht = 1;
      }
! 
!     /* Make sure rounding doesn't cause a crash in memcpy below */
!     if(wd < bitmap->width)
!         wd = bitmap->width;
!     if(ht < bitmap->rows)
!         ht = bitmap->rows;
  
      bpr = (((wd + (instance->bmfmt.glyph<<3) - 1) >> 3) & 
             -instance->bmfmt.glyph);
Index: xc/lib/font/FreeType/module/ftmodule.c
===================================================================
RCS file: /cvs/xc/lib/font/FreeType/module/ftmodule.c,v
retrieving revision 1.13
diff -c -r1.13 ftmodule.c
*** xc/lib/font/FreeType/module/ftmodule.c	2002/10/01 00:02:11	1.13
--- xc/lib/font/FreeType/module/ftmodule.c	2003/02/12 15:56:58
***************
*** 44,50 ****
  	MODINFOSTRING1,
  	MODINFOSTRING2,
  	XF86_VERSION_CURRENT,
!         2, 0, 1,
  	ABI_CLASS_FONT,			/* Font module */
  	ABI_FONT_VERSION,
  	MOD_CLASS_FONT,
--- 44,50 ----
  	MODINFOSTRING1,
  	MODINFOSTRING2,
  	XF86_VERSION_CURRENT,
!         2, 0, 2,
  	ABI_CLASS_FONT,			/* Font module */
  	ABI_FONT_VERSION,
  	MOD_CLASS_FONT,

Reply via email to