[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 メーリングリストの案内