- native bullet: add some checks to physics space and physics vehicle

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8410 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 13 years ago
parent 0a11431b21
commit 20c5994db4
  1. 3
      engine/src/bullet/native/com_jme3_bullet_PhysicsSpace.cpp
  2. 12
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsVehicle.cpp

@ -390,6 +390,9 @@ extern "C" {
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
(JNIEnv * env, jobject object, jlong spaceId) { (JNIEnv * env, jobject object, jlong spaceId) {
jmePhysicsSpace* space = (jmePhysicsSpace*) spaceId; jmePhysicsSpace* space = (jmePhysicsSpace*) spaceId;
if (space == NULL) {
return;
}
delete(space); delete(space);
} }

@ -67,6 +67,7 @@ extern "C" {
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster
(JNIEnv *env, jobject object, jlong bodyId, jlong spaceId) { (JNIEnv *env, jobject object, jlong bodyId, jlong spaceId) {
//btRigidBody* body = (btRigidBody*) bodyId; //btRigidBody* body = (btRigidBody*) bodyId;
jmeClasses::initJavaClasses(env);
jmePhysicsSpace *space = (jmePhysicsSpace *)spaceId; jmePhysicsSpace *space = (jmePhysicsSpace *)spaceId;
if (space == NULL) { if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException"); jclass newExc = env->FindClass("java/lang/NullPointerException");
@ -84,6 +85,7 @@ extern "C" {
*/ */
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle
(JNIEnv *env, jobject object, jlong objectId, jlong casterId) { (JNIEnv *env, jobject object, jlong objectId, jlong casterId) {
jmeClasses::initJavaClasses(env);
btRigidBody* body = (btRigidBody*) objectId; btRigidBody* body = (btRigidBody*) objectId;
if (body == NULL) { if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException"); jclass newExc = env->FindClass("java/lang/NullPointerException");
@ -92,6 +94,11 @@ extern "C" {
} }
body->setActivationState(DISABLE_DEACTIVATION); body->setActivationState(DISABLE_DEACTIVATION);
btVehicleRaycaster* caster = (btDefaultVehicleRaycaster*) casterId; btVehicleRaycaster* caster = (btDefaultVehicleRaycaster*) casterId;
if (caster == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btRaycastVehicle::btVehicleTuning tuning; btRaycastVehicle::btVehicleTuning tuning;
btRaycastVehicle* vehicle = new btRaycastVehicle(tuning, body, caster); btRaycastVehicle* vehicle = new btRaycastVehicle(tuning, body, caster);
return (long) vehicle; return (long) vehicle;
@ -250,6 +257,11 @@ extern "C" {
return; return;
} }
delete(vehicle); delete(vehicle);
if (rayCaster == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
delete(rayCaster); delete(rayCaster);
} }

Loading…
Cancel
Save