diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuFloatBuffer.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuFloatBuffer.java index a90d85a16d..5e5bbb529e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuFloatBuffer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuFloatBuffer.java @@ -49,9 +49,17 @@ class GpuFloatBuffer void ensureCapacity(int size) { - while (buffer.remaining() < size) + int capacity = buffer.capacity(); + final int position = buffer.position(); + if ((capacity - position) < size) { - FloatBuffer newB = allocateDirect(buffer.capacity() * 2); + do + { + capacity *= 2; + } + while ((capacity - position) < size); + + FloatBuffer newB = allocateDirect(capacity); buffer.flip(); newB.put(buffer); buffer = newB; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuIntBuffer.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuIntBuffer.java index 15ea5461ad..1e85111c19 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuIntBuffer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuIntBuffer.java @@ -54,9 +54,17 @@ class GpuIntBuffer void ensureCapacity(int size) { - while (buffer.remaining() < size) + int capacity = buffer.capacity(); + final int position = buffer.position(); + if ((capacity - position) < size) { - IntBuffer newB = allocateDirect(buffer.capacity() * 2); + do + { + capacity *= 2; + } + while ((capacity - position) < size); + + IntBuffer newB = allocateDirect(capacity); buffer.flip(); newB.put(buffer); buffer = newB;