diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-10-24 22:22:44 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-10-24 22:22:44 +0100 |
commit | 714052fb32a3c521efb295f2c400a673d515fb77 (patch) | |
tree | 23f09f39c14231d675f7da383eb6ab61fe6e8bc4 | |
parent | 325570e731b5819e28ce6bae72242914bb2d7f8e (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.c | 12 |
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; |