From c3e1c6d07b57afbfec127396975732d4de96b06e Mon Sep 17 00:00:00 2001 From: Jia-Hong Chen Date: Fri, 8 Feb 2013 11:36:18 -0800 Subject: [PATCH] 8005261: [parfait] #415 sun/java2d/opengl/GLXSurfaceData.c Memory leak of pointer 'glxsdo' allocated with malloc Reviewed-by: prr, vadim --- .../native/sun/java2d/opengl/GLXSurfaceData.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c b/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c index 16209e72395..a9549e0cd03 100644 --- a/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c +++ b/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c @@ -57,22 +57,23 @@ Java_sun_java2d_opengl_GLXSurfaceData_initOps(JNIEnv *env, jobject glxsd, jobject peer, jlong aData) { #ifndef HEADLESS - OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, glxsd, - sizeof(OGLSDOps)); GLXSDOps *glxsdo = (GLXSDOps *)malloc(sizeof(GLXSDOps)); - J2dTraceLn(J2D_TRACE_INFO, "GLXSurfaceData_initOps"); - - if (oglsdo == NULL) { - JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); - return; - } - if (glxsdo == NULL) { JNU_ThrowOutOfMemoryError(env, "creating native GLX ops"); return; } + OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, glxsd, + sizeof(OGLSDOps)); + if (oglsdo == NULL) { + free(glxsdo); + JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); + return; + } + + J2dTraceLn(J2D_TRACE_INFO, "GLXSurfaceData_initOps"); + oglsdo->privOps = glxsdo; oglsdo->sdOps.Lock = OGLSD_Lock;