diff -ru lesstif2-0.94.4-old/lib/Xm-2.1/XmIm.c lesstif2-0.94.4/lib/Xm-2.1/XmIm.c --- lesstif2-0.94.4-old/lib/Xm-2.1/XmIm.c 2004-10-20 21:32:11.000000000 +0200 +++ lesstif2-0.94.4/lib/Xm-2.1/XmIm.c 2007-03-28 14:39:27.000000000 +0200 @@ -133,7 +133,10 @@ p->next = q->next; } - XtFree((char *)stuff); + /* if count!=0 then someone uses the stuff as orig_xim + so unlink it but not free it */ + if (!stuff->count) + XtFree((char *)stuff); } /* @@ -1060,6 +1063,8 @@ XCloseIM(stuff->xim); DEBUGOUT(_LtDebug(__FILE__, w, "XCloseIM(%p)\n", stuff->xim)); stuff->orig_xim->xim = NULL; + /* stuff->orig_xim is now useless */ + XtFree(stuff->orig_xim); } else { DEBUGOUT(_LtDebug(__FILE__, w, "XmImCloseXIM(%p), count -> %d\n", stuff->xim, stuff->orig_xim->count));