mirror of
https://git.freebsd.org/ports.git
synced 2025-05-31 02:16:27 -04:00
Note that those drivers are barely maintained and might disappear in the futur PR: 216270 Submitted by: matthew@reztek.cz
72 lines
1.8 KiB
Text
72 lines
1.8 KiB
Text
From 2f1a5b44f62028f2608c0c94e58154df09e9ada3 Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Tue, 19 Jul 2011 14:13:33 +1000
|
|
Subject: Don't free anything in PreInit, provide an UnInit instead.
|
|
|
|
Also fixes:
|
|
- leaking priv->buffer
|
|
- fd closure bug
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
|
|
diff --git a/src/acecad.c b/src/acecad.c
|
|
index a3326a0..6a0b347 100644
|
|
--- src/acecad.c
|
|
+++ src/acecad.c
|
|
@@ -126,7 +126,7 @@ _X_EXPORT InputDriverRec ACECAD =
|
|
"acecad",
|
|
NULL,
|
|
AceCadPreInit,
|
|
- NULL,
|
|
+ AceCadUnInit,
|
|
NULL,
|
|
default_options
|
|
};
|
|
@@ -462,16 +462,26 @@ AceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
|
|
* If something went wrong, cleanup and return NULL
|
|
*/
|
|
SetupProc_fail:
|
|
- if ((local) && (local->fd))
|
|
+ return BadAlloc;
|
|
+}
|
|
+
|
|
+static void
|
|
+AceCadUnInit(InputDriverPtr drv, InputInfoPtr local, int flags)
|
|
+{
|
|
+ AceCadPrivatePtr priv = (AceCadPrivatePtr) (local->private);
|
|
+
|
|
+ if (local->fd > -1)
|
|
+ {
|
|
xf86CloseSerial (local->fd);
|
|
- if ((priv) && (priv->buffer))
|
|
- XisbFree (priv->buffer);
|
|
+ local->fd = -1;
|
|
+ }
|
|
+
|
|
if (priv) {
|
|
+ if (priv->buffer)
|
|
+ XisbFree (priv->buffer);
|
|
free (priv);
|
|
- if (local)
|
|
- local->private = NULL;
|
|
+ local->private = NULL;
|
|
}
|
|
- return BadAlloc;
|
|
}
|
|
|
|
static Bool
|
|
diff --git a/src/acecad.h b/src/acecad.h
|
|
index b9291c7..48fa38a 100644
|
|
--- src/acecad.h
|
|
+++ src/acecad.h
|
|
@@ -106,6 +106,7 @@ static Bool QueryHardware (AceCadPrivatePtr);
|
|
static void NewPacket (AceCadPrivatePtr priv);
|
|
static Bool AceCadGetPacket (AceCadPrivatePtr);
|
|
static int AceCadPreInit(InputDriverPtr, InputInfoPtr , int);
|
|
+static void AceCadUnInit(InputDriverPtr, InputInfoPtr , int);
|
|
#ifdef HAVE_LINUX_INPUT_H
|
|
static void USBReadInput (InputInfoPtr);
|
|
static Bool USBQueryHardware (InputInfoPtr);
|
|
--
|
|
cgit v0.10.2
|
|
|