Skip to content
This repository has been archived by the owner on May 4, 2022. It is now read-only.

Commit

Permalink
Fix field sizes
Browse files Browse the repository at this point in the history
  • Loading branch information
mittorn committed Jul 8, 2017
1 parent 3bce17e commit 9ebfc98
Showing 1 changed file with 31 additions and 4 deletions.
35 changes: 31 additions & 4 deletions dlls/util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1584,6 +1584,33 @@ void UTIL_StripToken( const char *pKey, char *pDest )
//
// --------------------------------------------------------------
static int gSizes[FIELD_TYPECOUNT] =
{
sizeof(float), // FIELD_FLOAT
sizeof(int), // FIELD_STRING
sizeof(void*), // FIELD_ENTITY
sizeof(void*), // FIELD_CLASSPTR
sizeof(void*), // FIELD_EHANDLE
sizeof(void*), // FIELD_entvars_t
sizeof(void*), // FIELD_EDICT
sizeof(float) * 3, // FIELD_VECTOR
sizeof(float) * 3, // FIELD_POSITION_VECTOR
sizeof(void *), // FIELD_POINTER
sizeof(int), // FIELD_INTEGER
#ifdef GNUC
sizeof(void *) * 2, // FIELD_FUNCTION
#else
sizeof(void *), // FIELD_FUNCTION
#endif
sizeof(int), // FIELD_BOOLEAN
sizeof(short), // FIELD_SHORT
sizeof(char), // FIELD_CHARACTER
sizeof(float), // FIELD_TIME
sizeof(int), // FIELD_MODELNAME
sizeof(int), // FIELD_SOUNDNAME
};

// entities has different store size
static int gInputSizes[FIELD_TYPECOUNT] =
{
sizeof(float), // FIELD_FLOAT
sizeof(int), // FIELD_STRING
Expand All @@ -1594,12 +1621,12 @@ static int gSizes[FIELD_TYPECOUNT] =
sizeof(int), // FIELD_EDICT
sizeof(float) * 3, // FIELD_VECTOR
sizeof(float) * 3, // FIELD_POSITION_VECTOR
sizeof(int *), // FIELD_POINTER
sizeof(void *), // FIELD_POINTER
sizeof(int), // FIELD_INTEGER
#ifdef GNUC
sizeof(int *) * 2, // FIELD_FUNCTION
sizeof(void *) * 2, // FIELD_FUNCTION
#else
sizeof(int *), // FIELD_FUNCTION
sizeof(void *), // FIELD_FUNCTION
#endif
sizeof(int), // FIELD_BOOLEAN
sizeof(short), // FIELD_SHORT
Expand Down Expand Up @@ -2137,7 +2164,7 @@ int CRestore::ReadField( void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCou
for( j = 0; j < pTest->fieldSize; j++ )
{
void *pOutputData = ( (char *)pBaseData + pTest->fieldOffset + ( j * gSizes[pTest->fieldType] ) );
void *pInputData = (char *)pData + j * gSizes[pTest->fieldType];
void *pInputData = (char *)pData + j * gInputSizes[pTest->fieldType];

switch( pTest->fieldType )
{
Expand Down

0 comments on commit 9ebfc98

Please sign in to comment.