diff --git a/src/java/org/lwjgl/test/mapped/MappedObjectTests1.java b/src/java/org/lwjgl/test/mapped/MappedObjectTests1.java index 8922b06d..bc02a406 100644 --- a/src/java/org/lwjgl/test/mapped/MappedObjectTests1.java +++ b/src/java/org/lwjgl/test/mapped/MappedObjectTests1.java @@ -89,17 +89,34 @@ public class MappedObjectTests1 { vecs.view = 0; } - // test bound check + // test bounds checking { assert (vecs.view == 0); try { + vecs.view = 49; + assert vecs.view == 49; + vecs.view = 0; vecs.view = 50; System.out.println("org.lwjgl.util.mapped.Checks is false or there is a bug in bounds checking."); vecs.view = 0; } catch (IndexOutOfBoundsException e) { // expected, ignore } + assert (vecs.view == 0); + + try { + vecs.view = 10; + MappedFloat vecs2 = vecs.slice(); + vecs.view = 0; + + vecs2.view = 39; + assert vecs2.view == 39; + vecs2.view = 40; + System.out.println("org.lwjgl.util.mapped.Checks is false or there is a bug in bounds checking."); + } catch (IndexOutOfBoundsException e) { + // expected, ignore + } } // test dup diff --git a/src/java/org/lwjgl/util/mapped/MappedObject.java b/src/java/org/lwjgl/util/mapped/MappedObject.java index e08ec3ae..35bc1320 100644 --- a/src/java/org/lwjgl/util/mapped/MappedObject.java +++ b/src/java/org/lwjgl/util/mapped/MappedObject.java @@ -97,7 +97,7 @@ public class MappedObject { } final void checkAddress(final long address) { - if ( preventGC.capacity() < (address + stride - baseAddress) ) + if ( preventGC.capacity() < (address - MappedObjectUnsafe.getBufferBaseAddress(preventGC) + stride) ) throw new IndexOutOfBoundsException(); }