buffer.getElementComponent() problem on some android emulated phones


This is my first post. Great library you got here, thank you!

This might be a bug, somewhere:
Usecase: Use HelloMesh from JME3 docs (Custom meshes), and call this method at the end of simpleInitApp():

private void testBuffers(Geometry geo) {
Mesh mesh = geo.getMesh();
VertexBuffer buffer = mesh.getBuffer(Type.Index);
System.out.println(“buffer.getNumElements()=” + buffer.getNumElements());
System.out.println(“buffer.getNumComponents()=” + buffer.getNumComponents());
System.out.println(“buffer.getElementComponent(0, 0)=” + buffer.getElementComponent(0, 0));
System.out.println(“buffer.getElementComponent(0, 1)=” + buffer.getElementComponent(0, 1));
System.out.println(“buffer.getElementComponent(0, 2)=” + buffer.getElementComponent(0, 2));
System.out.println(“buffer.getElementComponent(1, 0)=” + buffer.getElementComponent(1, 0));
System.out.println(“buffer.getElementComponent(1, 1)=” + buffer.getElementComponent(1, 1));
System.out.println(“buffer.getElementComponent(1, 2)=” + buffer.getElementComponent(1, 2));

On desktop and must phones and even most emulators this prints our the correct values. But for example on Nexus 6 with API 24 or Nexus 5 with API 25 I get invalid big numbers:

I/System.out: buffer.getNumElements()=2
I/System.out: buffer.getNumComponents()=3
I/System.out: buffer.getElementComponent(0, 0)=33554432
I/System.out: buffer.getElementComponent(0, 1)=0
I/System.out: buffer.getElementComponent(0, 2)=16777216
I/System.out: buffer.getElementComponent(1, 0)=16777216
I/System.out: buffer.getElementComponent(1, 1)=50331648
I/System.out: buffer.getElementComponent(1, 2)=33554432

Is this a bug?

The workaround is to use ((Short/Float/Buffer)buffer).getData().get(a3+b).
Or use BufferUtils.getVector3Array((FloatBuffer)buffer.getData()), but there is no method that would return short[] (for indexes).
I wander which method is better, in terms of performance and possible backward compatibility issues?

Have a nice hollidays, WB.