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