opengl add-on: Fix potential memory leaks. CID 2777
* Free GL FrameBuffer which could of resulted in memory leaks * Add better malloc/calloc failure tracing.
This commit is contained in:
@@ -285,22 +285,33 @@ MesaSoftwareRenderer::MesaSoftwareRenderer(BGLView* view, ulong options,
|
||||
// create core framebuffer
|
||||
fFrameBuffer = (struct msr_framebuffer*)calloc(1,
|
||||
sizeof(*fFrameBuffer));
|
||||
if (fFrameBuffer == NULL) {
|
||||
ERROR("%s: Unable to calloc GL FrameBuffer!\n", __func__);
|
||||
_mesa_destroy_visual(fVisual);
|
||||
return;
|
||||
}
|
||||
_mesa_initialize_window_framebuffer(&fFrameBuffer->base, fVisual);
|
||||
|
||||
// Setup front render buffer
|
||||
fFrontRenderBuffer = _NewRenderBuffer(true);
|
||||
if (fFrontRenderBuffer == NULL) {
|
||||
ERROR("%s: FrontRenderBuffer is requested but unallocated!\n",
|
||||
__func__);
|
||||
_mesa_destroy_visual(fVisual);
|
||||
free(fFrameBuffer);
|
||||
return;
|
||||
}
|
||||
_mesa_add_renderbuffer(&fFrameBuffer->base, BUFFER_FRONT_LEFT,
|
||||
&fFrontRenderBuffer->base);
|
||||
|
||||
// Setup back render buffer (if needed)
|
||||
// Setup back render buffer (if requested)
|
||||
if (fVisual->doubleBufferMode) {
|
||||
fBackRenderBuffer = _NewRenderBuffer(false);
|
||||
if (fBackRenderBuffer == NULL) {
|
||||
ERROR("%s: BackRenderBuffer is requested but unallocated!\n",
|
||||
__func__);
|
||||
_mesa_destroy_visual(fVisual);
|
||||
free(fFrameBuffer);
|
||||
return;
|
||||
}
|
||||
_mesa_add_renderbuffer(&fFrameBuffer->base, BUFFER_BACK_LEFT,
|
||||
@@ -346,6 +357,7 @@ MesaSoftwareRenderer::~MesaSoftwareRenderer()
|
||||
_mesa_destroy_context(fContext);
|
||||
|
||||
free(fInfo);
|
||||
free(fFrameBuffer);
|
||||
|
||||
delete fBitmap;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user