VJE-Delta (vje)をXIMに、XFree86 4.3.0を使っていると、たとえばMozillaがFlash pluginが起動したときに落ちてしまう。以下のパッチを当ててXlibを作り直せば、とりあえず直る。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
--- lib/X11/imDefIm.c.orig Sat Dec 14 10:53:56 2002 +++ lib/X11/imDefIm.c Mon Dec 1 02:36:45 2003 @@ -2081,6 +2081,7 @@ _XimRegisterServerFilter(im); return True; } + _XimShutdown(im); #ifdef XIM_CONNECTABLE } else if (IS_DELAYBINDABLE(im)) { if (_XimDelayModeSetAttr(im)) --- lib/X11/ICWrap.c.orig Mon Nov 25 23:04:53 2002 +++ lib/X11/ICWrap.c Mon Dec 1 02:38:55 2003 @@ -346,7 +346,7 @@ XSetICFocus(ic) XIC ic; { - if (ic->core.im) + if (ic != NULL && ic->core.im) (*ic->methods->set_focus) (ic); } |
imDefIm.cの修正はすでにXFree86 4.4.0やfreedesktop.orgのlibX11 6.2.1では修正済みの単純なバグフィックスだが、ICWrap.cのハックはvjeの問題をlibX11側で回避するものだ。vjeからどういう経路でXSetICFocus(NULL)が呼ばれるのかわかっていないのだが、ちゃんと追っかけないといけないなー。VJE-Deltaは商用製品だがXIMフロントエンド(vje)部分はソースが付属しているので、原因がわかれば我々で対処できるはず。