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,