Skip to content

Commit

Permalink
Changed CScriptArgReader to handle unsigned numbers better
Browse files Browse the repository at this point in the history
  • Loading branch information
jushar committed Dec 4, 2015
1 parent 71fb329 commit 60ae4c3
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions Shared/sdk/CScriptArgReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,27 @@ class CScriptArgReader
//
// Read next number
//
template < class T >
template < typename T >
void ReadNumber ( T& outValue )
{
int iArgument = lua_type ( m_luaVM, m_iIndex );
if ( iArgument == LUA_TNUMBER || iArgument == LUA_TSTRING )
{
lua_Number number = lua_tonumber(m_luaVM, m_iIndex++);
lua_Number number = lua_tonumber ( m_luaVM, m_iIndex++ );

if ( std::isnan( number ) )
{
SetCustomError ( "Expected number, got NaN", "Bad argument" );
return;
}

if (std::isnan(number))
if ( std::is_unsigned < T > () && number < 0.0 )
{
SetCustomError("Expected number, got NaN", "Bad argument");
SetCustomError ( "Expected positive value, got negative", "Bad argument" );
return;
}

outValue = static_cast < T > (number);
outValue = static_cast < T > ( number );
return;
}

Expand All @@ -68,17 +74,23 @@ class CScriptArgReader
//
// Read next number, using default if needed
//
template < class T, class U >
template < typename T, typename U >
void ReadNumber ( T& outValue, const U& defaultValue )
{
int iArgument = lua_type ( m_luaVM, m_iIndex );
if ( iArgument == LUA_TNUMBER || iArgument == LUA_TSTRING )
{
lua_Number number = lua_tonumber(m_luaVM, m_iIndex++);
lua_Number number = lua_tonumber ( m_luaVM, m_iIndex++ );

if ( std::isnan ( number ) )
{
SetCustomError ( "Expected number, got NaN", "Bad argument" );
return;
}

if (std::isnan(number))
if ( std::is_unsigned < T > () && number < 0.0 )
{
SetCustomError("Expected number, got NaN", "Bad argument");
SetCustomError ( "Expected positive value, got negative", "Bad argument" );
return;
}

Expand Down

0 comments on commit 60ae4c3

Please sign in to comment.