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

Reply via email to