Skip to content

Commit e578a38

Browse files
committed
GetDirectBufferCapacity() may return -1, but shouldn't throw exception
1 parent 9a26728 commit e578a38

9 files changed

+35
-16
lines changed

src/main/native/glue/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionSh
8383
// no check for exceptions!
8484
NULL_CHK(pEnv, pBuffer, "The mass buffer is not direct.",);
8585
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(massBuffer);
86-
EXCEPTION_CHK(pEnv,);
86+
// no check for exceptions!
87+
btAssert(capacityFloats != -1);
8788

8889
const int numChildren = pShape->getNumChildShapes();
8990
btTransform principal;

src/main/native/glue/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_HullCollisionShape
7373

7474
NULL_CHK(pEnv, buffer, "The buffer does not exist.", 0);
7575
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(buffer);
76-
EXCEPTION_CHK(pEnv, 0);
76+
// no check for exceptions!
77+
btAssert(capacityFloats != -1);
7778
if (capacityFloats < 3 * n) {
7879
pEnv->ThrowNew(jmeClasses::IllegalArgumentException,
7980
"The buffer is too small.");
@@ -112,7 +113,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_HullCollisionShape_
112113

113114
NULL_CHK(pEnv, storeBuffer, "The store buffer does not exist.",);
114115
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(storeBuffer);
115-
EXCEPTION_CHK(pEnv,);
116+
// no check for exceptions!
117+
btAssert(capacityFloats != -1);
116118
int numVerts = pShape->getNumPoints();
117119
jlong floatsNeeded = 3 * (jlong) numVerts;
118120
if (floatsNeeded > capacityFloats) {

src/main/native/glue/com_jme3_bullet_collision_shapes_infos_IndexedMesh.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,15 +382,17 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_infos_IndexedMesh_f
382382
NULL_CHK(pEnv, pVertices, "The position buffer is not direct.",);
383383
// no check for exceptions!
384384
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(floatBuffer);
385-
EXCEPTION_CHK(pEnv,);
385+
// no check for exceptions!
386+
btAssert(capacityFloats != -1);
386387
btAssert(capacityFloats == 3 * pMesh->m_numVertices);
387388

388389
NULL_CHK(pEnv, intBuffer, "The index buffer does not exist.",);
389390
jint * const pIndices = (jint *) pEnv->GetDirectBufferAddress(intBuffer);
390391
NULL_CHK(pEnv, pIndices, "The index buffer is not direct.",);
391392
// no check for exceptions!
392393
const jlong capacityInts = pEnv->GetDirectBufferCapacity(intBuffer);
393-
EXCEPTION_CHK(pEnv,);
394+
// no check for exceptions!
395+
btAssert(capacityInts != -1);
394396
btAssert(capacityInts == 3 * pMesh->m_numTriangles);
395397

396398
jint * const pMeshIndices = (jint *) pMesh->m_triangleIndexBase;

src/main/native/glue/com_jme3_bullet_objects_PhysicsSoftBody.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,7 +1073,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsSoftBody_getMasses
10731073
// no check for exceptions!
10741074

10751075
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(massBuffer);
1076-
EXCEPTION_CHK(pEnv,);
1076+
// no check for exceptions!
1077+
btAssert(capacityFloats != -1);
10771078
int numNodes = pBody->m_nodes.size();
10781079
for (int i = 0; i < numNodes && i < capacityFloats; ++i) {
10791080
pMasses[i] = pBody->getMass(i);
@@ -1729,7 +1730,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsSoftBody_setMasses
17291730
// no check for exceptions!
17301731

17311732
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(massBuffer);
1732-
EXCEPTION_CHK(pEnv,);
1733+
// no check for exceptions!
1734+
btAssert(capacityFloats != -1);
17331735
int numNodes = pBody->m_nodes.size();
17341736
for (int i = 0; i < numNodes && i < capacityFloats; ++i) {
17351737
pBody->setMass(i, pBuffer[i]);
@@ -1774,7 +1776,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsSoftBody_setNormals
17741776

17751777
const jlong capacityFloats
17761778
= pEnv->GetDirectBufferCapacity(normalBuffer) - 2;
1777-
EXCEPTION_CHK(pEnv,);
1779+
// no check for exceptions!
1780+
btAssert(capacityFloats != -3);
17781781
int numNodes = pBody->m_nodes.size();
17791782
for (int nodeIndex = 0, offset = 0;
17801783
nodeIndex < numNodes && offset < capacityFloats;) {
@@ -1919,7 +1922,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsSoftBody_setVelocitie
19191922

19201923
const jlong capacityFloats
19211924
= pEnv->GetDirectBufferCapacity(velocityBuffer) - 2;
1922-
EXCEPTION_CHK(pEnv,);
1925+
// no check for exceptions!
1926+
btAssert(capacityFloats != -3);
19231927
int numNodes = pBody->m_nodes.size();
19241928
for (int nodeIndex = 0, offset = 0;
19251929
nodeIndex < numNodes && offset < capacityFloats;) {

src/main/native/glue/com_jme3_bullet_util_NativeSoftBodyUtil.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ JNIEXPORT void JNICALL Java_com_jme3_bullet_util_NativeSoftBodyUtil_updateMesh__
9898
// no check for exceptions!
9999

100100
const jlong mapCapacityInts = pEnv->GetDirectBufferCapacity(indexMap);
101-
EXCEPTION_CHK(pEnv,);
101+
// no check for exceptions!
102+
btAssert(mapCapacityInts != -1);
102103
const btVector3 offset
103104
= (meshInLocalSpace ? getBoundingCenter(pBody) : btVector3(0, 0, 0));
104105

src/main/native/glue/vhacd4_Vhacd4.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,17 @@ JNIEXPORT void JNICALL Java_vhacd4_Vhacd4_compute
115115
NULL_CHK(pEnv, pPositions, "The positions buffer is not direct.",);
116116
// no check for exceptions!
117117
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(positionsBuffer);
118-
EXCEPTION_CHK(pEnv,);
118+
// no check for exceptions!
119+
assert(capacityFloats != -1);
119120

120121
NULL_CHK(pEnv, indicesBuffer, "The indices buffer does not exist.",);
121122
const jint * const pIndices
122123
= (jint *) pEnv->GetDirectBufferAddress(indicesBuffer);
123124
NULL_CHK(pEnv, pIndices, "The indices buffer is not direct.",);
124125
// no check for exceptions!
125126
const jlong capacityInts = pEnv->GetDirectBufferCapacity(indicesBuffer);
126-
EXCEPTION_CHK(pEnv,);
127+
// no check for exceptions!
128+
assert(capacityFloats != -1);
127129

128130
IVHACD::Parameters * const pParams
129131
= reinterpret_cast<IVHACD::Parameters *> (paramsId);

src/main/native/glue/vhacd4_Vhacd4Hull.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
/*
3434
* Author: Stephen Gold
3535
*/
36+
#include <cassert>
3637
#include "vhacd4_Vhacd4Hull.h"
3738
#include "jmeClasses.h"
3839

@@ -75,7 +76,8 @@ JNIEXPORT void JNICALL Java_vhacd4_Vhacd4Hull_getPositions
7576
// no check for exceptions!
7677

7778
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(storeBuffer);
78-
EXCEPTION_CHK(pEnv,);
79+
// no check for exceptions!
80+
assert(capacityFloats != -1);
7981
const uint32_t numPoints = pHull->m_points.size();
8082
for (uint32_t i = 0; i < numPoints; ++i) {
8183
const uint32_t bp = 3 * i;

src/main/native/glue/vhacd_VHACD.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
/*
3434
* Author: Stephen Gold
3535
*/
36+
#include <cassert>
3637
#ifndef NO_DEBUG
3738
#include <iostream>
3839
#endif
@@ -106,15 +107,17 @@ JNIEXPORT void JNICALL Java_vhacd_VHACD_compute
106107
NULL_CHK(pEnv, pPositions, "The positions buffer is not direct.",);
107108
// no check for exceptions!
108109
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(positionsBuffer);
109-
EXCEPTION_CHK(pEnv,);
110+
// no check for exceptions!
111+
assert(capacityFloats != -1);
110112

111113
NULL_CHK(pEnv, indicesBuffer, "The indices buffer does not exist.",);
112114
const jint * const pIndices
113115
= (jint *) pEnv->GetDirectBufferAddress(indicesBuffer);
114116
NULL_CHK(pEnv, pIndices, "The indices buffer is not direct.",);
115117
// no check for exceptions!
116118
const jlong capacityInts = pEnv->GetDirectBufferCapacity(indicesBuffer);
117-
EXCEPTION_CHK(pEnv,);
119+
// no check for exceptions!
120+
assert(capacityFloats != -1);
118121

119122
IVHACD::Parameters * const pParams
120123
= reinterpret_cast<IVHACD::Parameters *> (paramsId);

src/main/native/glue/vhacd_VHACDHull.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
/*
3434
* Author: Stephen Gold
3535
*/
36+
#include <cassert>
3637
#include "vhacd_VHACDHull.h"
3738
#include "jmeClasses.h"
3839
#include "VHACD.h"
@@ -73,7 +74,8 @@ JNIEXPORT void JNICALL Java_vhacd_VHACDHull_getPositions
7374
// no check for exceptions!
7475

7576
const jlong capacityFloats = pEnv->GetDirectBufferCapacity(storeBuffer);
76-
EXCEPTION_CHK(pEnv,);
77+
// no check for exceptions!
78+
assert(capacityFloats != -1);
7779
const uint32_t numFloats = 3 * pHull->m_nPoints;
7880
for (uint32_t i = 0; i < numFloats && i < capacityFloats; ++i) {
7981
pPositions[i] = pHull->m_points[i];

0 commit comments

Comments
 (0)