diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 30742ff2e..4db4d22d6 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -2355,6 +2355,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) int i = scrn->scrnIndex; Bool have_outputs = TRUE; Bool ret; + Bool success = FALSE; /* Set up the device options */ config->options = xnfalloc (sizeof (xf86DeviceOptions)); @@ -2413,11 +2414,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) * Set the position of each output */ if (!xf86InitialOutputPositions (scrn, modes)) - { - free(crtcs); - free(modes); - return FALSE; - } + goto bailout; /* * Set initial panning of each output @@ -2428,11 +2425,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) * Assign CRTCs to fit output configuration */ if (have_outputs && !xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) - { - free(crtcs); - free(modes); - return FALSE; - } + goto bailout; /* XXX override xf86 common frame computation code */ @@ -2509,7 +2502,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) * Make sure the configuration isn't too small. */ if (width < config->minWidth || height < config->minHeight) - return FALSE; + goto bailout; /* * Limit the crtc config to virtual[XY] if the driver can't grow the @@ -2532,10 +2525,12 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) xf86CVTMode(width, height, 60, 0, 0)); } - + success = TRUE; + bailout: free(crtcs); free(modes); - return TRUE; + free(enabled); + return success; } /*