Skip to content

Commit d2d9c4c

Browse files
authored
Merge pull request #42 from danielga/fix-incorrect-lua-stack-handling
Fixed some incorrect Lua stack handling Possibly fixed CLC_GMod_ClientToServer and SVC_GMod_ServerToClient
2 parents f10dc45 + 58c650c commit d2d9c4c

File tree

4 files changed

+35
-7
lines changed

4 files changed

+35
-7
lines changed

source/main.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ namespace global
5656
if( !LUA->IsType( -1, GarrysMod::Lua::Type::NIL ) )
5757
return 1;
5858

59-
LUA->Pop( 2 );
60-
6159
LUA->GetFEnv( 1 );
6260
LUA->Push( 2 );
6361
LUA->RawGet( -2 );

source/netmessage.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ namespace NetMessage
181181
if( it != netmessages_setup.end( ) )
182182
( *it ).second( LUA );
183183

184-
LUA->SetFEnv( -3 );
184+
LUA->SetFEnv( -2 );
185185

186186
if( netchan != nullptr )
187187
{

source/netmessages.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,9 @@ namespace NetMessages
952952

953953
void SVC_GMod_ServerToClient::SetupLua( GarrysMod::Lua::ILuaBase *LUA )
954954
{
955-
ReaderMember<SVC_GMod_ServerToClient, &SVC_GMod_ServerToClient::Data>( LUA, "Data" );
955+
NumberMember<SVC_GMod_ServerToClient, int32_t, &SVC_GMod_ServerToClient::Length>( LUA, "Length" );
956+
ReaderMember<SVC_GMod_ServerToClient, &SVC_GMod_ServerToClient::DataIn>( LUA, "DataIn" );
957+
WriterMember<SVC_GMod_ServerToClient, &SVC_GMod_ServerToClient::DataOut>( LUA, "DataOut" );
956958
}
957959

958960
const char CLC_ClientInfo::Name[] = "clc_ClientInfo";
@@ -1149,6 +1151,8 @@ namespace NetMessages
11491151

11501152
void CLC_GMod_ClientToServer::SetupLua( GarrysMod::Lua::ILuaBase *LUA )
11511153
{
1152-
ReaderMember<CLC_GMod_ClientToServer, &CLC_GMod_ClientToServer::Data>( LUA, "Data" );
1154+
NumberMember<CLC_GMod_ClientToServer, int32_t, &CLC_GMod_ClientToServer::Length>( LUA, "Length" );
1155+
ReaderMember<CLC_GMod_ClientToServer, &CLC_GMod_ClientToServer::DataIn>( LUA, "DataIn" );
1156+
WriterMember<CLC_GMod_ClientToServer, &CLC_GMod_ClientToServer::DataOut>( LUA, "DataOut" );
11531157
}
11541158
}

source/netmessages.hpp

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,20 @@ namespace NetMessages
532532

533533
static void SetupLua( GarrysMod::Lua::ILuaBase *LUA );
534534

535-
bf_read Data;
535+
SVC_GMod_ServerToClient( ) : Length( 0 ), DataOut( Data.Uint8, sizeof( Data ) )
536+
{ }
537+
538+
int32_t Length;
539+
bf_read DataIn;
540+
bf_write DataOut;
541+
542+
union {
543+
uint8_t Uint8[512] = { 0 };
544+
uint16_t Uint16[256];
545+
uint32_t Uint32[128];
546+
uint64_t Uint64[64];
547+
const char *String[128];
548+
} Data;
536549
};
537550

538551
class CLC_ClientInfo : public CNetMessage
@@ -681,6 +694,19 @@ namespace NetMessages
681694

682695
static void SetupLua( GarrysMod::Lua::ILuaBase *LUA );
683696

684-
bf_read Data;
697+
CLC_GMod_ClientToServer( ) : Length( 0 ), DataOut( Data.Uint8, sizeof( Data ) )
698+
{ }
699+
700+
int32_t Length;
701+
bf_read DataIn;
702+
bf_write DataOut;
703+
704+
union {
705+
uint8_t Uint8[512] = { 0 };
706+
uint16_t Uint16[256];
707+
uint32_t Uint32[128];
708+
uint64_t Uint64[64];
709+
const char *String[128];
710+
} Data;
685711
};
686712
}

0 commit comments

Comments
 (0)