[Armadillo:08445] Re: x-window

email@hidden
2012年 12月 6日 (木) 01:05:02 JST


At Wed, 05 Dec 2012 18:48:58 +0900,
watanabe wrote:
> 
> 先程ご教示頂いた修正を行って大分進むようになったのですが、
> "Segmentation fault"というエラーになり終了してしまいます。
> 
> 追いかけてみると、
> XmbDrawString(d, w, fs, gc, mbx, mby, eucbuff, strlen(eucbuff));
> でエラーになっていました。
> パラメータを調べてみると、
> d=0x37008,w=0x400001,fs=0x0,gc=0x40cd8,mbx=0x40,mby=0x26,
> eucbuff=0x25ec8,len=0x10
> となっていました。

fsが 0x0 だからでは?

> XmbDrawStringはx11そのものなので、どうやって調べたらよいか
> 困惑しています。
> エラーの原因と対応策についてご教示ください。

原因は

 1) man page を読む
    => なにも書いていない
 2) source を読む
    2.1) source をもってくる
    2.2) 該当関数を読む
	void
	XmbDrawString(
	    Display            *dpy,
	    Drawable            d,
	    XFontSet            font_set,
	    GC                  gc,
	    int                 x,
	    int                 y,
	    _Xconst char       *text,
	    int                 text_len)
	{
	    (void)(*font_set->methods->mb_draw_string) (dpy, d, font_set, gc, x, y,
	                                                (char *)text, text_len);
	}

     font_set を de-reference しているっぽいので、NULLだとセグる。


対応策は

 a) XCreateFontSet の戻り値を確認するコードにする
 b) フォントを入れる

じゃないでしょうか?
-- 
          yashi




armadillo メーリングリストの案内