Login  Register

Re: 3.9-8VM用のSqueakImmX11Pluginパッチ

Posted by Tsutomu Hiroshima on Feb 14, 2007; 4:21am
URL: https://forum.world.st/Squeak-ja-3367-3-9-8VM-SqueakImmX11Plugin-tp121473p121475.html

廣島です.

> 川村です。
>
> 遅れましたが、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;
}
/* ソースここまで */