diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-07-19 13:07:41 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-07-19 18:55:48 +1000 |
commit | ff389f91a2efec5184b56b8c717091d067f8fc46 (patch) | |
tree | ee51feed1a199ef5654071d58810776f68c6c680 | |
parent | f5aede2ed48f1cc7266e792b02f509f7b207e2d6 (diff) |
Don't free anything in PreInit, let the server call UnInit instead
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | src/xf86PM.c | 24 | ||||
-rw-r--r-- | src/xf86PM.h | 2 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/xf86PM.c b/src/xf86PM.c index 97e2134..ef73164 100644 --- a/src/xf86PM.c +++ b/src/xf86PM.c @@ -79,7 +79,7 @@ _X_EXPORT InputDriverRec PENMOUNT = { "penmount", NULL, PenMountPreInit, - /*PenMountUnInit*/NULL, + PenMountUnInit, NULL, default_options }; @@ -275,6 +275,7 @@ ProcessDeviceClose(PenMountPrivatePtr priv, DeviceIntPtr dev, InputInfoPtr pInfo priv->buffer = NULL; } xf86CloseSerial(pInfo->fd); + pInfo->fd = -1; } dev->public.on = FALSE; return (Success); @@ -454,6 +455,8 @@ PenMountPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) goto SetupProc_fail; } xf86CloseSerial(pInfo->fd); + pInfo->fd = -1; + /* * Process the options for your device like this */ @@ -495,16 +498,21 @@ PenMountPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) return Success; SetupProc_fail: - if ((pInfo) && (pInfo->fd)) - xf86CloseSerial (pInfo->fd); - if ((pInfo) && (pInfo->name)) - free (pInfo->name); + return BadValue; +} + +static void +PenMountUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) +{ + PenMountPrivatePtr priv = (PenMountPrivatePtr) (pInfo->private); - if ((priv) && (priv->buffer)) - XisbFree (priv->buffer); if (priv) + { + if (priv->buffer) + XisbFree (priv->buffer); free (priv); - return BadValue; + pInfo->private = NULL; + } } static Bool diff --git a/src/xf86PM.h b/src/xf86PM.h index 5183f91..88da048 100644 --- a/src/xf86PM.h +++ b/src/xf86PM.h @@ -93,6 +93,8 @@ static Bool PenMountSendPacket (PenMountPrivatePtr priv, unsigned char *buf, int static int PenMountPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags); +static void +PenMountUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags); static void PenMountPtrCtrl(DeviceIntPtr device, PtrCtrl *ctrl); |