diff --git a/va/drm/va_drm_utils.c b/va/drm/va_drm_utils.c index 5f378d51d..ec550a73b 100644 --- a/va/drm/va_drm_utils.c +++ b/va/drm/va_drm_utils.c @@ -88,12 +88,9 @@ VA_DRM_GetDriverNames(VADriverContextP ctx, char **drivers, unsigned *num_driver for (unsigned i = 0; i < ARRAY_SIZE(map); i++) { if (strcmp(map[i].drm_driver, drm_driver) == 0) { const char * const *va_drivers = map[i].va_driver; + for (; count < MAX_NAMES && va_drivers[count] && count < *num_drivers; count++) + drivers[count] = strdup(va_drivers[count]); - while (va_drivers[count]) { - if (count < MAX_NAMES && count < *num_drivers) - drivers[count] = strdup(va_drivers[count]); - count++; - } break; } } diff --git a/va/va.c b/va/va.c index bef10be4c..3fb40e0d4 100644 --- a/va/va.c +++ b/va/va.c @@ -686,6 +686,7 @@ static VAStatus va_new_opendriver(VADisplay dpy) if (vaStatus != VA_STATUS_SUCCESS) { /* Print and error yet continue, as per the above ordering note */ va_errorMessage(dpy, "vaGetDriverNames() failed with %s\n", vaErrorStr(vaStatus)); + num_drivers = 0; } else if (num_drivers > ARRAY_SIZE(drivers)) { va_errorMessage(dpy, "DRIVER BUG: vaGetDriverNames() provides too many drivers\n"); num_drivers = ARRAY_SIZE(drivers);