In MTLSurfaceData_initOps() we return if "(gc == NULL)" but we don't free already allocated "mtlsdo" using (MTLSDOps *)malloc(sizeof(MTLSDOps)) which is of 40 bytes.
We need to free(mtlsdo) before we return from MTLSurfaceData_initOps() for any reasons. Moved (mtlsdo == NULL) check right after we allocate it and added logic to delete mtlsdo(40 bytes) at appropriate places. There is no regression test because to reproduce this issue we need to exhaust system memory. ------------- Commit messages: - 8316975: Memory leak in MTLSurfaceData Changes: https://git.openjdk.org/jdk/pull/16117/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16117&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8316975 Stats: 12 lines in 1 file changed: 5 ins; 5 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/16117.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/16117/head:pull/16117 PR: https://git.openjdk.org/jdk/pull/16117