Skip to content

Commit 47400a2

Browse files
committed
Make shared memory player state pointers const
1 parent 5b8cb6d commit 47400a2

File tree

7 files changed

+24
-25
lines changed

7 files changed

+24
-25
lines changed

src/engine/qcommon/msg.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,10 +1336,10 @@ MSG_WriteDeltaPlayerstate
13361336
13371337
=============
13381338
*/
1339-
void MSG_WriteDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlayerState *to )
1339+
void MSG_WriteDeltaPlayerstate(
1340+
msg_t *msg, const OpaquePlayerState *from, const OpaquePlayerState *to )
13401341
{
13411342
int lc;
1342-
int *fromF, *toF;
13431343
float fullFloat;
13441344
int trunc;
13451345
int startBit, endBit;
@@ -1383,8 +1383,8 @@ void MSG_WriteDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlaye
13831383
for ( int i = 0; i < numFields; i++ )
13841384
{
13851385
netField_t* field = &playerStateFields[i];
1386-
fromF = ( int * )( ( byte * ) from + field->offset );
1387-
toF = ( int * )( ( byte * ) to + field->offset );
1386+
auto fromF = reinterpret_cast<const int *>( reinterpret_cast<const byte *>( from ) + field->offset );
1387+
auto toF = reinterpret_cast<const int *>( reinterpret_cast<const byte *>( to ) + field->offset );
13881388

13891389
if (field->bits == STATS_GROUP_FIELD
13901390
? memcmp(fromF, toF, sizeof(int) * STATS_GROUP_NUM_STATS)
@@ -1401,8 +1401,8 @@ void MSG_WriteDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlaye
14011401
for ( int i = 0; i < lc; i++ )
14021402
{
14031403
netField_t* field = &playerStateFields[i];
1404-
fromF = ( int * )( ( byte * ) from + field->offset );
1405-
toF = ( int * )( ( byte * ) to + field->offset );
1404+
auto fromF = reinterpret_cast<const int *>( reinterpret_cast<const byte *>( from ) + field->offset );
1405+
auto toF = reinterpret_cast<const int *>( reinterpret_cast<const byte *>( to ) + field->offset );
14061406

14071407
if (field->bits == STATS_GROUP_FIELD)
14081408
{
@@ -1486,12 +1486,11 @@ static void ReadStatsGroup(msg_t* msg, int* to, const netField_t& field)
14861486
MSG_ReadDeltaPlayerstate
14871487
===================
14881488
*/
1489-
void MSG_ReadDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlayerState *to )
1489+
void MSG_ReadDeltaPlayerstate( msg_t *msg, const OpaquePlayerState *from, OpaquePlayerState *to )
14901490
{
14911491
int lc;
14921492
int startBit, endBit;
14931493
int print;
1494-
int *fromF, *toF;
14951494
int trunc;
14961495

14971496
if (playerStateFields.empty())
@@ -1537,8 +1536,8 @@ void MSG_ReadDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlayer
15371536
for ( int i = 0; i < lc; i++ )
15381537
{
15391538
netField_t* field = &playerStateFields[i];
1540-
fromF = ( int * )( ( byte * ) from + field->offset );
1541-
toF = ( int * )( ( byte * ) to + field->offset );
1539+
auto fromF = reinterpret_cast<const int *>( reinterpret_cast<const byte *>( from ) + field->offset );
1540+
auto toF = reinterpret_cast<int *>( reinterpret_cast<byte *>( to ) + field->offset );
15421541

15431542
if ( !MSG_ReadBits( msg, 1 ) )
15441543
{

src/engine/qcommon/qcommon.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ void MSG_WriteDeltaEntity( msg_t *msg, entityState_t *from, entityState_t *to,
9696
void MSG_ReadDeltaEntity( msg_t *msg, const entityState_t *from, entityState_t *to, int number );
9797

9898
void MSG_InitNetcodeTables(NetcodeTable playerStateTable, int playerStateSize);
99-
void MSG_WriteDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlayerState *to );
100-
void MSG_ReadDeltaPlayerstate( msg_t *msg, OpaquePlayerState *from, OpaquePlayerState *to );
99+
void MSG_WriteDeltaPlayerstate( msg_t *msg, const OpaquePlayerState *from, const OpaquePlayerState *to );
100+
void MSG_ReadDeltaPlayerstate( msg_t *msg, const OpaquePlayerState *from, OpaquePlayerState *to );
101101

102102
//============================================================================
103103

src/engine/server/server.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ struct server_t
8282
const char *entityParsePoint; // used during game VM init
8383

8484
// the game virtual machine will update these on init and changes
85-
sharedEntity_t *gentities;
86-
int gentitySize;
85+
byte *gentities; // points to the sgame's array of gentity_t
86+
int gentitySize; // >= sizeof(sharedEntity_t) - game can have unlimited amount of private data
8787
int num_entities; // current number, <= MAX_GENTITIES
8888

89-
OpaquePlayerState *gameClients;
90-
int gameClientSize; // will be > sizeof(playerState_t) due to game private data
89+
const byte *gameClients; // points to the sgame's array of playerState_t in shared memory
90+
int gameClientSize; // will be <= sizeof(OpaquePlayerState)
9191

9292
int restartTime;
9393
int time;
@@ -393,7 +393,7 @@ void SV_SendClientIdle( client_t *client );
393393
// sv_sgame.c
394394
//
395395
sharedEntity_t *SV_GentityNum( int num );
396-
OpaquePlayerState *SV_GameClientNum( int num );
396+
const OpaquePlayerState *SV_GameClientNum( int num );
397397

398398
svEntity_t *SV_SvEntityForGentity( sharedEntity_t *gEnt );
399399
void SV_InitGameProgs();

src/engine/server/sv_ccmds.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ class StatusCmd: public Cmd::StaticCmd
338338
connection = "ERROR";
339339
}
340340
}
341-
OpaquePlayerState* ps = SV_GameClientNum( i );
341+
const OpaquePlayerState* ps = SV_GameClientNum( i );
342342

343343
const char *address = NET_AdrToString( cl.netchan.remoteAddress );
344344

src/engine/server/sv_main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ static void SVC_Status( const netadr_t& from, const Cmd::Args& args )
496496

497497
if ( cl->state >= clientState_t::CS_CONNECTED )
498498
{
499-
OpaquePlayerState* ps = SV_GameClientNum( i );
499+
const OpaquePlayerState* ps = SV_GameClientNum( i );
500500
status += Str::Format( "%i %i \"%s\"\n", ps->persistant[ PERS_SCORE ], cl->ping, cl->name );
501501
}
502502
}

src/engine/server/sv_sgame.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ sharedEntity_t *SV_GentityNum( int num )
6060
Sys::Drop( "SV_GentityNum: bad num %d", num );
6161
}
6262

63-
return ( sharedEntity_t * )( ( byte * ) sv.gentities + sv.gentitySize * ( num ) );
63+
return reinterpret_cast<sharedEntity_t *>( sv.gentities + sv.gentitySize * num );
6464
}
6565

66-
OpaquePlayerState *SV_GameClientNum( int num )
66+
const OpaquePlayerState *SV_GameClientNum( int num )
6767
{
6868
if ( num < 0 || num >= sv_maxclients->integer || sv.gameClients == nullptr )
6969
{
@@ -194,12 +194,12 @@ void SV_LocateGameData( const IPC::SharedMemory& shmRegion, int numGEntities, in
194194
if ( int64_t(shmRegion.GetSize()) < int64_t(MAX_GENTITIES) * sizeofGEntity_t + int64_t(sv_maxclients->integer) * sizeofGameClient )
195195
Sys::Drop( "SV_LocateGameData: Shared memory region too small" );
196196

197-
char* base = static_cast<char*>(shmRegion.GetBase());
198-
sv.gentities = reinterpret_cast<sharedEntity_t*>(base);
197+
byte* base = static_cast<byte*>(shmRegion.GetBase());
198+
sv.gentities = base;
199199
sv.gentitySize = sizeofGEntity_t;
200200
sv.num_entities = numGEntities;
201201

202-
sv.gameClients = reinterpret_cast<OpaquePlayerState*>(base + MAX_GENTITIES * size_t(sizeofGEntity_t));
202+
sv.gameClients = base + MAX_GENTITIES * size_t(sizeofGEntity_t);
203203
sv.gameClientSize = sizeofGameClient;
204204
}
205205

src/engine/server/sv_snapshot.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ static void SV_BuildClientSnapshot( client_t *client )
690690
}
691691

692692
// grab the current playerState_t
693-
OpaquePlayerState* ps = SV_GameClientNum( client - svs.clients );
693+
const OpaquePlayerState* ps = SV_GameClientNum( client - svs.clients );
694694
memcpy(&frame->ps, ps, sizeof(frame->ps));
695695

696696
// never send client's own entity, because it can

0 commit comments

Comments
 (0)