summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-10-24 22:22:44 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2016-10-24 22:22:44 +0100
commit714052fb32a3c521efb295f2c400a673d515fb77 (patch)
tree23f09f39c14231d675f7da383eb6ab61fe6e8bc4
parent325570e731b5819e28ce6bae72242914bb2d7f8e (diff)
sna: Keep the backlight iface name on the heap
When finding the per-connector backlight interface, we have to take a copy of the interface name for later use, as in this case it is not constant. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_display.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 28a2ee8f..66c31476 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -1008,7 +1008,7 @@ static const char * const sysfs_connector_types[] = {
/* DRM_MODE_CONNECTOR_DPI */ "DPI"
};
-static char *has_connector_backlight(xf86OutputPtr output, char *buf)
+static char *has_connector_backlight(xf86OutputPtr output)
{
struct sna_output *sna_output = output->driver_private;
struct sna *sna = to_sna(output->scrn);
@@ -1016,7 +1016,7 @@ static char *has_connector_backlight(xf86OutputPtr output, char *buf)
DIR *dir;
struct dirent *de;
int minor, len;
- char *ret = NULL;
+ char *str = NULL;
if (sna_output->connector_type >= ARRAY_SIZE(sysfs_connector_types))
return NULL;
@@ -1052,14 +1052,13 @@ static char *has_connector_backlight(xf86OutputPtr output, char *buf)
__FUNCTION__, de->d_name));
if (backlight_exists(de->d_name)) {
- snprintf(buf, 128, "%s", de->d_name);
- ret = buf;
+ str = strdup(de->d_name); /* leak! */
break;
}
}
closedir(dir);
- return ret;
+ return str;
}
static void
@@ -1067,7 +1066,6 @@ sna_output_backlight_init(xf86OutputPtr output)
{
struct sna_output *sna_output = output->driver_private;
struct pci_device *pci;
- char buf[128];
MessageType from;
char *best_iface;
@@ -1082,7 +1080,7 @@ sna_output_backlight_init(xf86OutputPtr output)
goto done;
}
- best_iface = has_connector_backlight(output, buf);
+ best_iface = has_connector_backlight(output);
if (best_iface)
goto done;