fix crash when a robot's guided missile explodes
authorChris Taylor <chris@icculus.org>
Sun, 9 Jul 2006 03:25:10 +0000 (03:25 +0000)
committerChris Taylor <chris@icculus.org>
Sun, 9 Jul 2006 03:25:10 +0000 (03:25 +0000)
ChangeLog
main/laser.c
main/object.c

index 6e697d8..d0c1489 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-09  Chris Taylor  <chris@icculus.org>
+
+       * main/laser.c, main/object.c: fix crash when a robot's guided
+       missile explodes
+
 2006-06-05  Chris Taylor  <chris@icculus.org>
 
        * main/slew.h: fix error when building editor with RELEASE
index b2878b1..f222e6d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: laser.c,v 1.13 2004-12-19 09:52:59 btb Exp $ */
+/* $Id: laser.c,v 1.14 2006-07-09 03:25:10 chris Exp $ */
 /*
 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
@@ -23,7 +23,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
 #endif
 
 #ifdef RCS
-char laser_rcsid[] = "$Id: laser.c,v 1.13 2004-12-19 09:52:59 btb Exp $";
+char laser_rcsid[] = "$Id: laser.c,v 1.14 2006-07-09 03:25:10 chris Exp $";
 #endif
 
 #include <stdlib.h>
@@ -1536,7 +1536,8 @@ void Laser_do_weapon_sequence(object *obj)
 
 
        //      For homing missiles, turn towards target. (unless it's the guided missile)
-       if (Weapon_info[obj->id].homing_flag && !(obj->id==GUIDEDMISS_ID && obj==Guided_missile[Objects[obj->ctype.laser_info.parent_num].id] && obj->signature==Guided_missile[Objects[obj->ctype.laser_info.parent_num].id]->signature)) {
+       if (Weapon_info[obj->id].homing_flag && !(obj->id==GUIDEDMISS_ID && obj->ctype.laser_info.parent_type==OBJ_PLAYER && obj==Guided_missile[Objects[obj->ctype.laser_info.parent_num].id] && obj->signature==Guided_missile[Objects[obj->ctype.laser_info.parent_num].id]->signature))
+       {
                vms_vector              vector_to_object, temp_vec;
                fix                             dot=F1_0;
                fix                             speed, max_speed;
index e4f6004..57324d6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: object.c,v 1.20 2006-03-05 12:19:42 chris Exp $ */
+/* $Id: object.c,v 1.21 2006-07-09 03:25:10 chris Exp $ */
 /*
 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
@@ -1416,7 +1416,8 @@ void obj_delete(int objnum)
        Assert(obj->type != OBJ_NONE);
        Assert(obj != ConsoleObject);
 
-       if (obj->type==OBJ_WEAPON && obj->id==GUIDEDMISS_ID) {
+       if (obj->type==OBJ_WEAPON && obj->id==GUIDEDMISS_ID && obj->ctype.laser_info.parent_type==OBJ_PLAYER)
+       {
                pnum=Objects[obj->ctype.laser_info.parent_num].id;
                mprintf ((0,"Deleting a guided missile! Player %d\n\n",pnum));