From 755d1418400a42ae28bacdcb57b90e1ee9209932 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 10 Jan 2022 17:53:39 +0000 Subject: [PATCH] Don't leak allocated memory when exporting GL structured data --- .../driver/gl/wrappers/gl_texture_funcs.cpp | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp index 485101654..83a0d20ca 100644 --- a/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_texture_funcs.cpp @@ -5329,6 +5329,12 @@ bool WrappedOpenGL::Serialise_glTextureSubImage1DEXT(SerialiserType &ser, GLuint AddResourceInitChunk(texture); } + if(ser.IsReading() && IsStructuredExporting(m_State)) + { + if(!UnpackBufBound) + FreeAlignedBuffer((byte *)pixels); + } + return true; } @@ -5556,6 +5562,12 @@ bool WrappedOpenGL::Serialise_glTextureSubImage2DEXT(SerialiserType &ser, GLuint AddResourceInitChunk(texture); } + if(ser.IsReading() && IsStructuredExporting(m_State)) + { + if(!UnpackBufBound) + FreeAlignedBuffer((byte *)pixels); + } + return true; } @@ -5791,6 +5803,12 @@ bool WrappedOpenGL::Serialise_glTextureSubImage3DEXT(SerialiserType &ser, GLuint AddResourceInitChunk(texture); } + if(ser.IsReading() && IsStructuredExporting(m_State)) + { + if(!UnpackBufBound) + FreeAlignedBuffer((byte *)pixels); + } + return true; } @@ -6010,6 +6028,12 @@ bool WrappedOpenGL::Serialise_glCompressedTextureSubImage1DEXT(SerialiserType &s AddResourceInitChunk(texture); } + if(ser.IsReading() && IsStructuredExporting(m_State)) + { + if(!UnpackBufBound) + FreeAlignedBuffer((byte *)pixels); + } + return true; } @@ -6235,6 +6259,12 @@ bool WrappedOpenGL::Serialise_glCompressedTextureSubImage2DEXT(SerialiserType &s AddResourceInitChunk(texture); } + if(ser.IsReading() && IsStructuredExporting(m_State)) + { + if(!UnpackBufBound) + FreeAlignedBuffer((byte *)pixels); + } + return true; } @@ -6469,6 +6499,12 @@ bool WrappedOpenGL::Serialise_glCompressedTextureSubImage3DEXT( AddResourceInitChunk(texture); } + if(ser.IsReading() && IsStructuredExporting(m_State)) + { + if(!UnpackBufBound) + FreeAlignedBuffer((byte *)pixels); + } + return true; }