Fixed bounds checking to work with .sliced mapped objects.
This commit is contained in:
parent
585549f1f1
commit
fa31e0f9cb
|
@ -89,17 +89,34 @@ public class MappedObjectTests1 {
|
||||||
vecs.view = 0;
|
vecs.view = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// test bound check
|
// test bounds checking
|
||||||
{
|
{
|
||||||
assert (vecs.view == 0);
|
assert (vecs.view == 0);
|
||||||
try {
|
try {
|
||||||
|
vecs.view = 49;
|
||||||
|
assert vecs.view == 49;
|
||||||
|
vecs.view = 0;
|
||||||
vecs.view = 50;
|
vecs.view = 50;
|
||||||
System.out.println("org.lwjgl.util.mapped.Checks is false or there is a bug in bounds checking.");
|
System.out.println("org.lwjgl.util.mapped.Checks is false or there is a bug in bounds checking.");
|
||||||
vecs.view = 0;
|
vecs.view = 0;
|
||||||
} catch (IndexOutOfBoundsException e) {
|
} catch (IndexOutOfBoundsException e) {
|
||||||
// expected, ignore
|
// expected, ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
assert (vecs.view == 0);
|
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
|
// test dup
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class MappedObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
final void checkAddress(final long address) {
|
final void checkAddress(final long address) {
|
||||||
if ( preventGC.capacity() < (address + stride - baseAddress) )
|
if ( preventGC.capacity() < (address - MappedObjectUnsafe.getBufferBaseAddress(preventGC) + stride) )
|
||||||
throw new IndexOutOfBoundsException();
|
throw new IndexOutOfBoundsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue