Mojira Archive
MC-167344

com.mojang.blaze3d.platform.ClipboardManager leaks direct buffers

The bug

In com.mojang.blaze3d.platform.ClipboardManager (Mojang name):
The class has one buffer of the size 1024 which it reuses if the UTF-8 encoded string to copy is not larger. However, if it is larger it allocates a new direct buffer in setClipboard(...) which it never frees.

This should be solved by not using ByteBuffer.allocateDirect (which is also discouraged by LWJGL), but instead using MemoryStack's malloc​ / calloc, or MemoryUtil's methods if the data becomes too large for the stack (?).
And yes, it should be safe to free the memory of the temporary buffer since glfwSetClipboardString says:

The specified string is copied before this function returns.

Fixed

Marcono1234

[Mojang] Bartosz Bok

2019-12-08, 08:08 PM

2020-01-10, 04:32 PM

2020-01-10, 04:32 PM

4

4

Plausible

Normal

Crash

1.15 Pre-release 6

1.15.2 Pre-Release 1