Henri Verbeet : wined3d: Don' t leak memory in IWineD3DPixelShaderImpl_GenerateShader().

Alexandre Julliard julliard at winehq.org
Tue Dec 9 06:24:53 CST 2008


Module: wine
Branch: master
Commit: acbdd807b6164e155357a9c8a49692dc574d7e20
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=acbdd807b6164e155357a9c8a49692dc574d7e20

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Dec  9 09:52:38 2008 +0100

wined3d: Don't leak memory in IWineD3DPixelShaderImpl_GenerateShader().

This fixes a regression introduced by commit
0bf32b12f5a97045c4c2785260961e53184c29ce.

---

 dlls/wined3d/pixelshader.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index 0557d86..6a4d7d5 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -275,13 +275,18 @@ static void pshader_set_limits(
 static inline GLuint IWineD3DPixelShaderImpl_GenerateShader(
     IWineD3DPixelShaderImpl *This) {
     SHADER_BUFFER buffer;
+    GLuint shader;
 
     buffer.buffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, SHADER_PGMSIZE);
     buffer.bsize = 0;
     buffer.lineNo = 0;
     buffer.newline = TRUE;
 
-    return ((IWineD3DDeviceImpl *)This->baseShader.device)->shader_backend->shader_generate_pshader((IWineD3DPixelShader *) This, &buffer);
+    shader = ((IWineD3DDeviceImpl *)This->baseShader.device)->shader_backend->shader_generate_pshader((IWineD3DPixelShader *)This, &buffer);
+
+    HeapFree(GetProcessHeap(), 0, buffer.buffer);
+
+    return shader;
 }
 
 static HRESULT WINAPI IWineD3DPixelShaderImpl_SetFunction(IWineD3DPixelShader *iface, CONST DWORD *pFunction) {




More information about the wine-cvs mailing list