[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 01296] mgp segfault if a14/k14 not found.



http://bugs.debian.org/177862 なんですが
xftとかがうまく動かなくなっている時に a14, k14 が
見えなくなって segfault するようです。

x11.cの void init_win2() で

/*(1)*/	plfs = XLoadQueryFont(display, PAGELIST_FONT);
	plkfs = XLoadQueryFont(display, PAGELIST_KFONT);
/*(2)*/	if (plfs) {
		XSetFont(display, gc_pl, plfs->fid);
		XSetFont(display, gc_plrev, plfs->fid);
		XSetFont(display, gc_pta, plfs->fid);
	}
	if (plkfs)
		XSetFont(display, gc_ptk, plkfs->fid);
	XSetFunction(display, gc_pl, GXcopy);
	XSetFunction(display, gc_plrev, GXcopy);
	XSetFunction(display, gc_pta, GXcopy);
	XSetFunction(display, gc_ptk, GXcopy);
	XSetForeground(display, gc_pl, BlackPixel(display, screen));
	XSetBackground(display, gc_pl, WhitePixel(display, screen));
	XSetForeground(display, gc_plrev, WhitePixel(display, screen));
	XSetBackground(display, gc_plrev, BlackPixel(display, screen));
/*(3)*/	pl_fh = (plfs->max_bounds.ascent + plfs->max_bounds.descent) * 1.2;
	pl_fw = plfs->max_bounds.rbearing + plfs->max_bounds.lbearing;

(1)のところで PAGELIST_FONT ("a14")を とってきていて、
(2)ではちゃんと NULL checkをしているのに (3)では そのcheckを
せずに参照しているので、ここでsegumentation faultするようです。

plfs自体は他でも参照しているようなので、PAGELIST_FONTが
とれなかった(plfs==NULL)時は、その旨を表示して終了したほうが
いいのではないでしょうか?

-- 
鵜飼文敏