r4915 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Oct 27 07:22:55 EDT 2008
Author: div0
Date: 2008-10-27 07:22:55 -0400 (Mon, 27 Oct 2008)
New Revision: 4915
Modified:
trunk/data/qcsrc/server/g_damage.qc
Log:
if a remaining RadiusDamage recursion exists, print a stack trace for it and avoid the crash
Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc 2008-10-27 11:18:21 UTC (rev 4914)
+++ trunk/data/qcsrc/server/g_damage.qc 2008-10-27 11:22:55 UTC (rev 4915)
@@ -819,6 +819,7 @@
return nearest;
}
+float RadiusDamage_running;
float RadiusDamage (entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity ignore, float forceintensity, float deathtype, entity directhitentity)
// Returns total damage applies to creatures
{
@@ -832,6 +833,21 @@
vector nearest;
float total_damage_to_creatures;
+ if(RadiusDamage_running)
+ {
+ string save;
+ print("RadiusDamage called recursively!\n");
+ print("Expect stuff to go HORRIBLY wrong.\n");
+ print("Causing a stack trace...\n");
+ save = cvar_string("prvm_backtraceforwarnings");
+ cvar_set("prvm_backtraceforwarnings", "1");
+ fclose(-1); // calls VM_Warning
+ cvar_set("prvm_backtraceforwarnings", save);
+ return 0;
+ }
+
+ RadiusDamage_running = 1;
+
blastorigin = (inflictor.origin + (inflictor.mins + inflictor.maxs) * 0.5);
total_damage_to_creatures = 0;
@@ -893,5 +909,7 @@
targ = targ.chain;
}
+ RadiusDamage_running = 0;
+
return total_damage_to_creatures;
}
More information about the nexuiz-commits
mailing list