commit de4ec145ea88253dc469ee81f094fa73de36b773 Author: Lars-Peter Clausen Date: Sun Feb 1 16:54:55 2009 +0100 Call xf86DeleteInput in UnInit or if something goes wrong in the Init procedure. If xf86DeleteInput is not called the server will end up with corrupted memory. diff --git a/src/tslib.c b/src/tslib.c index ad43abb..3eba078 100644 --- a/src/tslib.c +++ b/src/tslib.c @@ -271,6 +271,7 @@ xf86TslibUninit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) #endif xf86TslibControlProc(pInfo->dev, DEVICE_OFF); xfree(pInfo->private); + xf86DeleteInput(pInfo, 0); } /* @@ -347,15 +348,17 @@ xf86TslibInit(InputDriverPtr drv, IDevPtr dev, int flags) s = xf86SetStrOption(pInfo->options, "Device", NULL); priv->ts = ts_open(s, 0); + xfree(s); + if (!priv->ts) { ErrorF("ts_open failed (device=%s)\n",s); + xf86DeleteInput(pInfo, 0); return NULL; } - xfree(s); - if (ts_config(priv->ts)) { ErrorF("ts_config failed\n"); + xf86DeleteInput(pInfo, 0); return NULL; }