]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
fix segfault on empty slots in a stringbuffer on buf_sort
[xonotic/darkplaces.git] / cl_parse.c
index 57941d354f8285a350ff8f231d12ffd251800c33..63d49ab3142e7e9c57999f8df30fc827dc877ebb 100644 (file)
@@ -389,6 +389,7 @@ void CL_ParseEntityLump(char *entdata)
                        R_SetSkyBox(value);
                else if (!strcmp("fog", key))
                {
+                       FOG_clear(); // so missing values get good defaults
                        r_refdef.fog_start = 0;
                        r_refdef.fog_alpha = 1;
                        r_refdef.fog_end = 16384;
@@ -417,6 +418,16 @@ void CL_ParseEntityLump(char *entdata)
                        r_refdef.fog_height = atof(value);
                else if (!strcmp("fog_fadedepth", key))
                        r_refdef.fog_fadedepth = atof(value);
+               else if (!strcmp("fog_heighttexture", key))
+               {
+                       FOG_clear(); // so missing values get good defaults
+#if _MSC_VER >= 1400
+                       sscanf_s(value, "%f %f %f %f %f %f %f %f %f %s", &r_refdef.fog_density, &r_refdef.fog_red, &r_refdef.fog_green, &r_refdef.fog_blue, &r_refdef.fog_alpha, &r_refdef.fog_start, &r_refdef.fog_end, &r_refdef.fog_height, &r_refdef.fog_fadedepth, r_refdef.fog_height_texturename, (unsigned int)sizeof(r_refdef.fog_height_texturename));
+#else
+                       sscanf(value, "%f %f %f %f %f %f %f %f %f %63s", &r_refdef.fog_density, &r_refdef.fog_red, &r_refdef.fog_green, &r_refdef.fog_blue, &r_refdef.fog_alpha, &r_refdef.fog_start, &r_refdef.fog_end, &r_refdef.fog_height, &r_refdef.fog_fadedepth, r_refdef.fog_height_texturename);
+#endif
+                       r_refdef.fog_height_texturename[63] = 0;
+               }
        }
 }
 
@@ -1817,6 +1828,13 @@ void CL_ParseServerInfo (void)
 
                Con_Printf ("Auto-recording to %s.\n", demofile);
 
+               // Reset bit 0 for every new demo
+               Cvar_SetValueQuick(&cl_autodemo_delete,
+                       (cl_autodemo_delete.integer & ~0x1)
+                       |
+                       ((cl_autodemo_delete.integer & 0x2) ? 0x1 : 0)
+               );
+
                cls.demofile = FS_OpenRealFile(demofile, "wb", false);
                if (cls.demofile)
                {
@@ -3630,7 +3648,7 @@ void CL_ParseServerMessage(void)
 
                        if (cmd == -1)
                        {
-                               R_TimeReport("END OF MESSAGE");
+//                             R_TimeReport("END OF MESSAGE");
                                SHOWNET("END OF MESSAGE");
                                break;          // end of message
                        }
@@ -4075,19 +4093,19 @@ void CL_ParseServerMessage(void)
                                CL_ParsePointParticles1();
                                break;
                        }
-                       R_TimeReport(svc_strings[cmd]);
+//                     R_TimeReport(svc_strings[cmd]);
                }
        }
 
        if (cls.signon == SIGNONS)
                CL_UpdateItemsAndWeapon();
-       R_TimeReport("UpdateItems");
+//     R_TimeReport("UpdateItems");
 
        EntityFrameQuake_ISeeDeadEntities();
-       R_TimeReport("ISeeDeadEntities");
+//     R_TimeReport("ISeeDeadEntities");
 
        CL_UpdateMoveVars();
-       R_TimeReport("UpdateMoveVars");
+//     R_TimeReport("UpdateMoveVars");
 
        parsingerror = false;
 
@@ -4096,7 +4114,7 @@ void CL_ParseServerMessage(void)
        if (cls.demorecording)
        {
                CL_WriteDemoMessage (&net_message);
-               R_TimeReport("WriteDemo");
+//             R_TimeReport("WriteDemo");
        }
 }