- fixed overflow issue with large damage values in P_RadiusAttack.

This commit is contained in:
Christoph Oelckers 2016-04-21 10:51:41 +02:00
parent c3eec6db4d
commit ba7260c176

View file

@ -5178,8 +5178,8 @@ void P_RadiusAttack(AActor *bombspot, AActor *bombsource, int bombdamage, int bo
}
points *= thing->GetClass()->RDFactor;
// points and bombdamage should be the same sign
if (((int(points) * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY))
// points and bombdamage should be the same sign (the double cast of 'points' is needed to prevent overflows and incorrect values slipping through.)
if ((((double)int(points) * bombdamage) > 0) && P_CheckSight(thing, bombspot, SF_IGNOREVISIBILITY | SF_IGNOREWATERBOUNDARY))
{ // OK to damage; target is in direct path
double vz;
double thrust;