ValveSoftware / source-sdk-2013

The 2013 edition of the Source SDK

Home Page:https://developer.valvesoftware.com/wiki/SDK2013_GettingStarted

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Incorrect usage of FLT_MIN

Kefta opened this issue · comments

Reposting from #518 since the creator is banned. These usages from FLT_MIN should be replaced with std::numeric_limits<float>::lowest(), and FLT_MAX with std::numeric_limit<float>::max() for consistency though these are standard to be equivalent. Here are all the incorrect usages in the public repo:

pBBox[iBox].vMax.Init( FLT_MIN, FLT_MIN, FLT_MIN );

Vector vecMax( FLT_MIN, FLT_MIN, FLT_MIN );

Vector vecMax( FLT_MIN, FLT_MIN, FLT_MIN );

m_vecMax.Init( FLT_MIN, FLT_MIN, FLT_MIN );

This has been (incorrectly but passably) fixed in Garry's Mod as of Aug 6: https://commits.facepunch.com/388626

Yes, need to punish the developers who made this mistake!

I think Valve has no active developers. Or no money for fixing errors)

Replying to #519 (comment)

Hang on, are there also Source SDK MP analogues for these, or were these only found in the Singleplayer branch?

@SC1040-TS2 They are also in the MP branch.

The code for these portions is identical between MP and SP.

Understood. Just clarifying that given MP entries were not posted.

On a different relevant note, I noticed that the vecMin values are specified as FLT_MAX, while the vecMax values are specified as FLT_MIN. Is this correct, or also an incorrect usage that must be swapped to fix?

It is a correct usage - they are used in a loop to pick the min/max values from a range, so everything less than FLT_MAX/greater than std::numeric_limits::lowest() respectively should be considered. If they were swapped, the checks would never pass and thus the vectors would always keep their extreme values.

It is a correct usage - they are used in a loop to pick the min/max values from a range, so everything less than FLT_MAX/greater than std::numeric_limits::lowest() respectively should be considered. If they were swapped, the checks would never pass and thus the vectors would always keep their extreme values.

Understood. Just making sure that was the case, for my own understanding's sake.

I think it will not be correct usage.
Need init values with first value, and FLT_MIN/FLT_MAX not be used????