[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:10037] Re: XIM segv err (Re: 3.3.4 ready)



佐野@浜松です。

In <19990802005004X.xlj06203@xxxxxxxxxxxxxxxxxxxx>,
 at Mon, 2 Aug 1999 02:05:32 +0900,
  私:

> > 例えば XMODIFIERS="@im=kinput2" emacs & とすると、 Shift-Space で kinput2 の
> > 変換窓が開いてしまい、そのウィンドウをマウスで閉じて kinput2 を終了させると
> >  mule or emacs も落ちる、という現象が起きるのですが、これは Emacs/Mule のほう
> > の問題なのかもしれません。なお skkinput でも同様のようです。
> 
> という問題について、解決のヒントを頂いたのでこちらにも回覧します。

> > emacs でも同じようなコードがあると思います。

この件について、真鍋さんから続報がありました。

# メール回覧の許可はもらっています。

  | こんばんは、真鍋@浦安です。
  | 
  | From: manabe@xxxxxxxxx
  | Subject: Re: XIM segv err (Re: 3.3.4 ready)
  | Date: Sat, 31 Jul 1999 18:16:58 +0900
  | 
  | > emacs でも同じようなコードがあると思います。
  | 
  | ついでと言っては何ですが、同じ方法で 19.34 ベース mule 用の patch
  | を作ってみました。SegV を回避するだけの目的です。
  |  - - -
  | --- xfns.c.dist	Wed Nov 13 16:08:44 1996
  | +++ xfns.c	Thu Aug  5 07:31:07 1999
  | @@ -2592,6 +2592,16 @@
  |  
  |  #ifdef USE_X_TOOLKIT
  |  
  | +#ifdef HAVE_X_I18N
  | +#ifndef X_I18N_INHIBITED
  | +static void DestroyCallback(XIC ic, XPointer client_data, XPointer
  | +			    call_data)
  | +{
  | +  *(XIC *)client_data = 0;
  | +}
  | +#endif
  | +#endif
  | +
  |  /* Create and set up the X widget for frame F.  */
  |  
  |  static void
  | @@ -2747,10 +2757,15 @@
  |  
  |      if (xim)
  |        {
  | +	XICCallback xic_callback;
  | +
  | +	xic_callback.client_data = (XPointer)(&FRAME_XIC (f));
  | +	xic_callback.callback = DestroyCallback;
  |  	xic = XCreateIC (xim,  
  |  			 XNInputStyle,   XIMPreeditNothing | XIMStatusNothing,
  |  			 XNClientWindow, FRAME_X_WINDOW(f),
  |  			 XNFocusWindow,  FRAME_X_WINDOW(f),
  | +			 XNDestroyCallback, &xic_callback,
  |  			 NULL);
  |  
  |  	if (xic == 0)
  |  - - -
  |  ----- manabe@xxxxxxxxxx

これについて、 Emacs 20.3 (Debian 2.1 slink でパッケージ化されている
 emacs20-20.3-7) のコードに、同じファイルがあったので、そのまま追加して
みたんですが、部分的に改善されている (kinput2 や skkinput のウィンドウを
右上のボタンで閉じても emacs が終了しない場合がある) ものの、やはり以前
同様に終了してしまう場合、またウィンドウの書き直しもしないような状態で
停止してしまう (Emacs のウィンドウは表示されたまま、キー操作に反応しない) 
場合など、いくつかのパターンがあるようです。

まだ再現するための手順を確認できていないのですが、kinput2 のウィンドウと
 emacs のウィンドウが重なっている場合に動作がおかしくなるような気がします。

以上、とりあえず御報告まで。

-- 
     #わたしのおうちは浜松市、「夜のお菓子」で有名さ。
    <xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)