diff options
Diffstat (limited to 'recipes/lesstif/files/021_xim_chained_list_crash.diff')
-rw-r--r-- | recipes/lesstif/files/021_xim_chained_list_crash.diff | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/recipes/lesstif/files/021_xim_chained_list_crash.diff b/recipes/lesstif/files/021_xim_chained_list_crash.diff new file mode 100644 index 0000000000..10bdf8d0b9 --- /dev/null +++ b/recipes/lesstif/files/021_xim_chained_list_crash.diff @@ -0,0 +1,24 @@ +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)); |