OSDN Git Service

- native bullet: add some checks to physics space and physics vehicle
authornormen667 <normen667@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sun, 16 Oct 2011 02:06:58 +0000 (02:06 +0000)
committernormen667 <normen667@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sun, 16 Oct 2011 02:06:58 +0000 (02:06 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@8410 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/bullet/native/com_jme3_bullet_PhysicsSpace.cpp
engine/src/bullet/native/com_jme3_bullet_objects_PhysicsVehicle.cpp

index 1801e8a..01c4381 100644 (file)
@@ -390,6 +390,9 @@ extern "C" {
     JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
     (JNIEnv * env, jobject object, jlong spaceId) {
         jmePhysicsSpace* space = (jmePhysicsSpace*) spaceId;
+        if (space == NULL) {
+            return;
+        }
         delete(space);
     }
 
index db4a54b..d7f51f7 100644 (file)
@@ -67,6 +67,7 @@ extern "C" {
     JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster
     (JNIEnv *env, jobject object, jlong bodyId, jlong spaceId) {
         //btRigidBody* body = (btRigidBody*) bodyId;
+        jmeClasses::initJavaClasses(env);
         jmePhysicsSpace *space = (jmePhysicsSpace *)spaceId;
         if (space == NULL) {
             jclass newExc = env->FindClass("java/lang/NullPointerException");
@@ -84,6 +85,7 @@ extern "C" {
      */
     JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle
     (JNIEnv *env, jobject object, jlong objectId, jlong casterId) {
+        jmeClasses::initJavaClasses(env);
         btRigidBody* body = (btRigidBody*) objectId;
         if (body == NULL) {
             jclass newExc = env->FindClass("java/lang/NullPointerException");
@@ -92,6 +94,11 @@ extern "C" {
         }
         body->setActivationState(DISABLE_DEACTIVATION);
         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* vehicle = new btRaycastVehicle(tuning, body, caster);
         return (long) vehicle;
@@ -250,6 +257,11 @@ extern "C" {
             return;
         }
         delete(vehicle);
+        if (rayCaster == NULL) {
+            jclass newExc = env->FindClass("java/lang/NullPointerException");
+            env->ThrowNew(newExc, "The native object does not exist.");
+            return;
+        }
         delete(rayCaster);
     }