From 714052fb32a3c521efb295f2c400a673d515fb77 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 24 Oct 2016 22:22:44 +0100 Subject: 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 --- src/sna/sna_display.c | 12 +++++------- 1 file 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; -- cgit v1.2.3