From c617eabd630502e536a1c7aed38384b957208f12 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Thu, 27 Aug 2009 20:48:00 +0000 Subject: [PATCH] Also free() the direct_buffer_info on destruction. Use malloc() instead of calloc, since the memory is memcpy()'d in the next line. Added a TODO comment. +alphabranch git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32767 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../mesa_software_renderer/MesaSoftwareRenderer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp index b6c162b06d..ad6cca6436 100644 --- a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp +++ b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp @@ -320,6 +320,8 @@ MesaSoftwareRenderer::~MesaSoftwareRenderer() _mesa_destroy_framebuffer(fFrameBuffer); _mesa_destroy_context(fContext); + free(fInfo); + delete fBitmap; } @@ -577,10 +579,15 @@ MesaSoftwareRenderer::EnableDirectMode(bool enabled) void MesaSoftwareRenderer::DirectConnected(direct_buffer_info *info) { + // TODO: I'm not sure we need to do this: BGLView already + // keeps a local copy of the direct_buffer_info passed by + // BDirectWindow::DirectConnected(). BAutolock lock(fInfoLocker); if (info) { if (!fInfo) { - fInfo = (direct_buffer_info *)calloc(1, DIRECT_BUFFER_INFO_AREA_SIZE); + fInfo = (direct_buffer_info *)malloc(DIRECT_BUFFER_INFO_AREA_SIZE); + if (!fInfo) + return; } memcpy(fInfo, info, DIRECT_BUFFER_INFO_AREA_SIZE); } else if (fInfo) {