[Squeak-ja: 3403] Re: 3.9-8VM用のSqueakImmX11Pluginパッチ
Tsutomu Hiroshima
tsutomu @ nucba.ac.jp
2007年 2月 14日 (水) 13:21:25 JST
廣島です.
> 川村です。
>
> 遅れましたが、Linux(Ubuntu 6.10)でビルド実行しました。残念ながら、わたし
> の環境ではキー入力した段階でSegmentation faultとなってしまいました。
> 環境は次の通りです。
> Linux(Ubuntu 6.10),Kernel 2.6.17,gcc version 4.1.2,XIM(SCIM+Anthy),UTF-8
> です。EUC-jpなら動くかもしれません。後ほど試してみます。
>
> それでは。
>
> gdbでおちたところで'where':
> #0 x2sqKeyInput (xevt=0xbfcd363c)
> at
> /home/kawa90/work/squeak/vm/Squeak-3.9-8/platforms/unix/vm-display-X11/sqUnixX11.c:1450
落ちたところのソースから推測すると,
XCreateFontSet か XExtentsOfFontSet の返値が NULL なのかもしれません.
XIM用のフォントは
#define FONTNAME "-*-*-medium-r-normal--14-*"
とハードコードしてありますが,これがいけないのかも.
次の調査用プログラムをコンパイル(gcc -lX11)して,
引数に "-*-*-medium-r-normal--14-*" を与えて起動してみてください.
もし Fail したなら,引数を "-*-*-medium-r-normal--*" 等,
いろいろ変えてみて Fail しないパターンをお教え下さい.
策を考えます.
ただ,すぐに返事は書けないと思いますので,気長に待って下さい.
====
廣島 勉
/* 調査用プログラムソースここから */
#include <stdio.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xlocale.h>
int
main(int argc, char *argv[])
{
char **fname, *def;
int num, i;
Display *d;
XFontSet fs;
XFontStruct **fstr;
if (argv[1])
{
printf("pattern: %s\n", argv[1]);
setlocale(LC_ALL, "");
d = XOpenDisplay(NULL);
fs = XCreateFontSet(d, argv[1], &fname, &num, &def);
printf("default: %s\n", def);
for (i = 0; i < num; ++ i)
{
printf("missing: %s\n", fname[i]);
}
if (fs != NULL)
{
printf("found: ");
num = XFontsOfFontSet(fs, &fstr, &fname);
if (num > 0)
{
printf("%s", fname[0]);
for (i = 1; i < num; ++ i)
{
printf(",%s", fname[i]);
}
printf("\n");
}
if (XExtentsOfFontSet(fs) == NULL)
{
printf("Failed XExtentsOfFontSet\n");
}
XFreeFontSet(d, fs);
}
else
{
printf("Failed XCreateFontSet\n");
}
XCloseDisplay(d);
}
return 0;
}
/* ソースここまで */
Squeak-ja メーリングリストの案内