On Tue, Mar 08, 2011 at 01:11:50PM +0200, Erkki Seppälä wrote: > There were two memory leaks in the function: one was the lack of free > for "enabled", the other was the full lack of releasing anything when > configuration was too small. The first issue was fixed by adding the > missing free, the other was addressed by replacing the duplicate > memory releasing sequences with one that is gotoed into. > > Reviewed-by: Rami Ylimäki <rami.ylim...@vincit.fi> > Signed-off-by: Erkki Seppälä <erkki.sepp...@vincit.fi>
Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> Cheers, Peter > --- > hw/xfree86/modes/xf86Crtc.c | 21 ++++++++------------- > 1 files changed, 8 insertions(+), 13 deletions(-) > > diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c > index 9a5e50a..7eaecdb 100644 > --- a/hw/xfree86/modes/xf86Crtc.c > +++ b/hw/xfree86/modes/xf86Crtc.c > @@ -2353,6 +2353,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)); > @@ -2411,11 +2412,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 > @@ -2426,11 +2423,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 */ > > @@ -2507,7 +2500,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 > @@ -2530,10 +2523,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; > } > > /* > -- > 1.7.0.4 > > _______________________________________________ > xorg-devel@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel