[PATCH] modesetting: simplify bailing on calloc fail

Konstantin Kharlamov Hi-Angel at yandex.ru
Sun Dec 17 20:23:02 UTC 2017


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.

 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



More information about the xorg-devel mailing list