diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index 354e5b6a7..ca43e1f2d 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -1911,9 +1911,9 @@ drmmode_set_gamma_lut(drmmode_crtc_private_ptr drmmode_crtc, drmmode_prop_info_ptr gamma_lut_info = &drmmode_crtc->props[DRMMODE_CRTC_GAMMA_LUT]; const uint32_t crtc_id = drmmode_crtc->mode_crtc->crtc_id; - struct drm_color_lut *lut = calloc(size, sizeof(struct drm_color_lut)); - if (!lut) - return; + uint32_t blob_id; + assert(size > 0); + struct drm_color_lut lut[size]; assert(gamma_lut_info->prop_id != 0); @@ -1924,17 +1924,13 @@ drmmode_set_gamma_lut(drmmode_crtc_private_ptr drmmode_crtc, lut[i].reserved = 0; } - uint32_t blob_id; - if (drmModeCreatePropertyBlob(drmmode->fd, lut, sizeof(lut), &blob_id)) { - free(lut); + if (drmModeCreatePropertyBlob(drmmode->fd, lut, size * sizeof(struct drm_color_lut), &blob_id)) return; - } drmModeObjectSetProperty(drmmode->fd, crtc_id, DRM_MODE_OBJECT_CRTC, gamma_lut_info->prop_id, blob_id); drmModeDestroyPropertyBlob(drmmode->fd, blob_id); - free(lut); } static void diff --git a/meson.build b/meson.build index 1556491eb..6c35fd15d 100644 --- a/meson.build +++ b/meson.build @@ -13,7 +13,6 @@ cc = meson.get_compiler('c') add_project_arguments('-fno-strict-aliasing', language : 'c') add_project_arguments('-fvisibility=hidden', language : 'c') -add_project_arguments('-Wvla', language: 'c') add_project_link_arguments('-fvisibility=hidden', language : 'c') @@ -46,8 +45,7 @@ if cc.get_id() == 'gcc' or cc.get_id() == 'clang' '-Werror=write-strings', '-Werror=address', '-Werror=int-to-pointer-cast', - '-Werror=pointer-to-int-cast', - '-Wvla', + '-Werror=pointer-to-int-cast' ] else test_wflags = []