stop extra robots from overwriting exit models
authorBradley Bell <btb@icculus.org>
Sun, 23 Mar 2003 23:34:38 +0000 (23:34 +0000)
committerBradley Bell <btb@icculus.org>
Sun, 23 Mar 2003 23:34:38 +0000 (23:34 +0000)
ChangeLog
main/bm.c
main/polyobj.c

index 1fb7ae8..a2a8baa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2003-03-23  Bradley Bell  <btb@icculus.org>
 
+       * main/bm.c: stop extra robots from overwriting exit models
+
        * include/ogl_init.h: increased OGL_TEXTURE_LIST_SIZE so the
        texture list doesn't get full
 
index ece19d7..0f978af 100644 (file)
--- a/main/bm.c
+++ b/main/bm.c
@@ -1,4 +1,4 @@
-/* $Id: bm.c,v 1.24 2003-03-23 22:39:58 btb Exp $ */
+/* $Id: bm.c,v 1.25 2003-03-23 23:34:38 btb Exp $ */
 /*
 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
@@ -229,8 +229,6 @@ int load_exit_models()
                exit_hamfile = cfopen(":Data:exit.ham","rb");
 #endif
 
-               exit_modelnum = N_polygon_models++;
-               destroyed_exit_modelnum = N_polygon_models++;
                polymodel_read(&Polygon_models[exit_modelnum], exit_hamfile);
                polymodel_read(&Polygon_models[destroyed_exit_modelnum], exit_hamfile);
                Polygon_models[exit_modelnum].first_texture = start_num;
@@ -355,8 +353,12 @@ void bm_read_all(CFILE * fp)
        if (Piggy_hamfile_version < 3) {
                exit_modelnum = cfile_read_int(fp);
                destroyed_exit_modelnum = cfile_read_int(fp);
+       } else {
+               exit_modelnum = N_polygon_models++;
+               destroyed_exit_modelnum = N_polygon_models++;
+               Polygon_models[exit_modelnum].model_data = NULL;
+               Polygon_models[destroyed_exit_modelnum].model_data = NULL;
        }
-
 }
 
 #define D1_MAX_TEXTURES 800
@@ -508,7 +510,7 @@ void bm_read_all_d1(CFILE * fp)
 //extra items added after the release get written in an additional hamfile
 #define N_D2_ROBOT_TYPES               66
 #define N_D2_ROBOT_JOINTS              1145
-#define N_D2_POLYGON_MODELS            166
+#define N_D2_POLYGON_MODELS     166 + 2 // add 2 for exit models
 #define N_D2_OBJBITMAPS                        422
 #define N_D2_OBJBITMAPPTRS             502
 #define N_D2_WEAPON_TYPES              62
index b8f3890..97c7a88 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: polyobj.c,v 1.12 2003-02-13 22:07:58 btb Exp $ */
+/* $Id: polyobj.c,v 1.13 2003-03-23 23:34:38 btb Exp $ */
 /*
 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
@@ -17,7 +17,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
 #endif
 
 #ifdef RCS
-static char rcsid[] = "$Id: polyobj.c,v 1.12 2003-02-13 22:07:58 btb Exp $";
+static char rcsid[] = "$Id: polyobj.c,v 1.13 2003-03-23 23:34:38 btb Exp $";
 #endif
 
 #include <stdio.h>
@@ -580,7 +580,8 @@ int read_model_guns(char *filename,vms_vector *gun_points, vms_vector *gun_dirs,
 //free up a model, getting rid of all its memory
 void free_model(polymodel *po)
 {
-       d_free(po->model_data);
+       if (po->model_data)
+               d_free(po->model_data);
 }
 
 grs_bitmap *texture_list[MAX_POLYOBJ_TEXTURES];