[Armadillo:08448] Re: x-window

watanabe email@hidden
2012年 12月 6日 (木) 16:11:32 JST


渡辺です。

回答ありがとうございます。

> fsが 0x0 だからでは?
のアドバイスに従い、その設定を行っている所を調べたら、
fs  = XCreateFontSet(d, MTFONT, &miss, &n_mis, &def);
の箇所がありました。そのfsを調べてみたら、そこで0に
なっていました。

XCreateFontSetでエラーになっていると判断して、何故
エラーになっているのかを、manの内容とソースから
考えると、MTFONTがサポートされていないからではないかと
想像しました。ちなみにMTFONTは
#define MTFONT "\
  -sony-fixed-medium-r-normal--16-*-iso8859-1,\
  -jis-fixed-medium-r-normal--16-*-jisx0208.1983-0,\
  -sony-fixed-medium-r-normal--16-*-jisx0201.1976-0"
と定義されています。

現在、どのフォントがサポートされているかをVMware上で
xlsfontsコマンドで調べてみると、非常に大量のフォントが
表示されます。その内の一つの
-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-2
を上述したMTFONTの代わりに設定してみました。
結果は同じくfsに0が入ってしまいました。

調査方法及び対応方法が間違っていますでしょうか?

(2012/12/06 1:05), email@hidden wrote:
> 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) フォントを入れる
> 
> じゃないでしょうか?
> 




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