summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2008-09-10 20:53:43 +0200
committerChristoph Brill <egore911@egore911.de>2008-09-10 20:53:43 +0200
commit566b4dcc0b0f45ad83012314b67836ba2018cf9e (patch)
treee965ef41c3ea19b2361d6ab61e633d4f6f7cf822 /src
parent659c44d1049e4f6a588d40c8e0e18b390c45fa40 (diff)
Do not use stale option list pointers
The xf86ReplaceStrOption may change the option list pointer. Also make sure no stale option pointers are used after a call to SetDeviceAndProtocol(). Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src')
-rw-r--r--src/eventcomm.c3
-rw-r--r--src/synaptics.c13
2 files changed, 10 insertions, 6 deletions
diff --git a/src/eventcomm.c b/src/eventcomm.c
index 8474c54..25d0c73 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -365,7 +365,8 @@ EventAutoDevProbe(LocalDevicePtr local)
touchpad_found = TRUE;
xf86Msg(X_PROBED, "%s auto-dev sets device to %s\n",
local->name, fname);
- xf86ReplaceStrOption(local->options, "Device", fname);
+ local->options =
+ xf86ReplaceStrOption(local->options, "Device", fname);
event_query_axis_ranges(fd, local);
}
SYSCALL(close(fd));
diff --git a/src/synaptics.c b/src/synaptics.c
index 045a051..1f96cc3 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -177,8 +177,10 @@ SetDeviceAndProtocol(LocalDevicePtr local)
device = xf86FindOptionValue(local->options, "Device");
if (!device) {
device = xf86FindOptionValue(local->options, "Path");
- if (device)
- xf86ReplaceStrOption(local->options, "Device", device);
+ if (device) {
+ local->options =
+ xf86ReplaceStrOption(local->options, "Device", device);
+ }
}
if (device && strstr(device, "/dev/input/event")) {
#ifdef BUILD_EVENTCOMM
@@ -351,12 +353,13 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
xf86CollectInputOptions(local, NULL, NULL);
- opts = local->options;
-
- xf86OptionListReport(opts);
+ xf86OptionListReport(local->options);
+ /* may change local->options */
SetDeviceAndProtocol(local);
+ opts = local->options;
+
/* open the touchpad device */
local->fd = xf86OpenSerial(opts);
if (local->fd == -1) {