From 3aa4cba17520a488aa4a338a80f573af10d3e657 Mon Sep 17 00:00:00 2001 From: Jayathirth D V Date: Wed, 11 Oct 2023 03:36:17 +0000 Subject: [PATCH] 8316975: Memory leak in MTLSurfaceData Reviewed-by: prr --- .../libawt_lwawt/java2d/metal/MTLSurfaceData.m | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m index 129ba99adcc..90b77879b2a 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLSurfaceData.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -296,6 +296,11 @@ Java_sun_java2d_metal_MTLSurfaceData_initOps BMTLSDOps *bmtlsdo = (BMTLSDOps *)SurfaceData_InitOps(env, mtlsd, sizeof(BMTLSDOps)); MTLSDOps *mtlsdo = (MTLSDOps *)malloc(sizeof(MTLSDOps)); + if (mtlsdo == NULL) { + JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); + return; + } + J2dTraceLn1(J2D_TRACE_INFO, "MTLSurfaceData_initOps p=%p", bmtlsdo); J2dTraceLn1(J2D_TRACE_INFO, " pPeerData=%p", jlong_to_ptr(pPeerData)); J2dTraceLn1(J2D_TRACE_INFO, " layerPtr=%p", jlong_to_ptr(layerPtr)); @@ -303,12 +308,7 @@ Java_sun_java2d_metal_MTLSurfaceData_initOps gc = (*env)->NewGlobalRef(env, gc); if (gc == NULL) { - JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); - return; - } - - if (mtlsdo == NULL) { - (*env)->DeleteGlobalRef(env, gc); + free(mtlsdo); JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed."); return; }