Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-167344

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


    • Icon: Bug Bug
    • Resolution: Fixed
    • 1.15.2 Pre-Release 1
    • 1.15 Pre-release 6
    • None
    • Plausible
    • Crash
    • Normal

      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.

            boq [Mojang] Bartosz Bok
            marcono1234 Marcono1234
            4 Vote for this issue
            4 Start watching this issue