[PATCH] Fix sprite cache error

Only alias models should be setting anything in the mod->cache.data field, and
only through Mod_Extradata(). Stop the sprite loading code from setting this
field. This fixes a bug that could occur if an alias model was to replace an
unloaded sprite in the model cache.

Also, set mod->flags back to zero in a couple of places for QW, same as NQ.

diff -urN -X exclude a/NQ/model.c head/NQ/model.c
--- a/NQ/model.c	2006-06-10 19:47:11.000000000 +0930
+++ head/NQ/model.c	2006-06-10 20:15:48.000000000 +0930
@@ -168,14 +168,9 @@
     int i;
     model_t *mod;
 
-    for (i = 0, mod = mod_known; i < mod_numknown; i++, mod++) {
+    for (i = 0, mod = mod_known; i < mod_numknown; i++, mod++)
 	if (mod->type != mod_alias)
 	    mod->needload = true;
-//FIX FOR CACHE_ALLOC ERRORS:
-//FIXME - should be worked around in sprite loading routines?
-	if (mod->type == mod_sprite)
-	    mod->cache.data = NULL;
-    }
 }
 
 /*
@@ -1438,7 +1433,6 @@
 		       (LittleLong(pinmodel->numframes) - 1) *
 		       sizeof(pheader->frames[0]));
 
-//      mod->cache.data = pheader;
     mod->flags = LittleLong(pinmodel->flags);
 
 //
@@ -1738,9 +1732,6 @@
     size = sizeof(msprite_t) + (numframes - 1) * sizeof(psprite->frames);
 
     psprite = Hunk_AllocName(size, loadname);
-
-    mod->cache.data = psprite;
-
     psprite->type = LittleLong(pin->type);
     psprite->maxwidth = LittleLong(pin->width);
     psprite->maxheight = LittleLong(pin->height);
diff -urN -X exclude a/QW/client/model.c head/QW/client/model.c
--- a/QW/client/model.c	2006-06-10 19:47:11.000000000 +0930
+++ head/QW/client/model.c	2006-06-10 20:22:05.000000000 +0930
@@ -1159,6 +1159,7 @@
     Mod_MakeHull0();
 
     mod->numframes = 2;		// regular and alternate animation
+    mod->flags = 0;
 
 //
 // set up the submodels (FIXME: this is confusing)
@@ -1478,7 +1479,6 @@
 		       (LittleLong(pinmodel->numframes) - 1) *
 		       sizeof(pheader->frames[0]));
 
-//      mod->cache.data = pheader;
     mod->flags = LittleLong(pinmodel->flags);
 
 //
@@ -1778,9 +1778,6 @@
     size = sizeof(msprite_t) + (numframes - 1) * sizeof(psprite->frames);
 
     psprite = Hunk_AllocName(size, loadname);
-
-    mod->cache.data = psprite;
-
     psprite->type = LittleLong(pin->type);
     psprite->maxwidth = LittleLong(pin->width);
     psprite->maxheight = LittleLong(pin->height);
@@ -1800,6 +1797,7 @@
 	Sys_Error("%s: Invalid # of frames: %d", __func__, numframes);
 
     mod->numframes = numframes;
+    mod->flags = 0;
 
     pframetype = (dspriteframetype_t *) (pin + 1);
 
