[PATCH] modesetting: simplify bailing on calloc fail

Peter Hutterer peter.hutterer at who-t.net
Sun Dec 17 23:10:01 UTC 2017


On Sun, Dec 17, 2017 at 11:23:02PM +0300, Konstantin Kharlamov wrote:
> The "done" label restores crtc-> {x,y,rotation,mode}, frees output_id.
> Doing the calloc() before writing to those values frees us from
> necessity to restore them if calloc fails, and allows to merge
> "if (mode)" block.
> 
> Signed-off-by: Konstantin Kharlamov <Hi-Angel at yandex.ru>
> ---
> 
> P.S. I don't have commit rights.

But I do :)

   c2954b16c..c72049530  master -> master

Thanks

Cheers,
  Peter


>  hw/xfree86/drivers/modesetting/drmmode_display.c | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
> index a51722b58..5b8e4fa1b 100644
> --- a/hw/xfree86/drivers/modesetting/drmmode_display.c
> +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
> @@ -592,31 +592,27 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
>      int output_count = 0;
>      Bool ret = TRUE;
>      int i;
>      uint32_t fb_id = 0;
>      drmModeModeInfo kmode;
>  
> +    output_ids = calloc(sizeof(uint32_t), xf86_config->num_output);
> +    if (!output_ids)
> +        return FALSE;
> +
>      saved_mode = crtc->mode;
>      saved_x = crtc->x;
>      saved_y = crtc->y;
>      saved_rotation = crtc->rotation;
>  
>      if (mode) {
>          crtc->mode = *mode;
>          crtc->x = x;
>          crtc->y = y;
>          crtc->rotation = rotation;
> -    }
>  
> -    output_ids = calloc(sizeof(uint32_t), xf86_config->num_output);
> -    if (!output_ids) {
> -        ret = FALSE;
> -        goto done;
> -    }
> -
> -    if (mode) {
>          for (i = 0; i < xf86_config->num_output; i++) {
>              xf86OutputPtr output = xf86_config->output[i];
>              drmmode_output_private_ptr drmmode_output;
>  
>              if (output->crtc != crtc)
>                  continue;
> -- 
> 2.15.1
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list