Skip to content

Commit 81536c3

Browse files
committed
fix(CheckChatText): avoid splitting utf-8 code points on truncation
1 parent 78ca92a commit 81536c3

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/game/server/client.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@ char * CheckChatText( CBasePlayer *pPlayer, char *text )
7373

7474
// cut off after P_MAX_LEN chars
7575
if ( length > P_MAX_LEN )
76-
p[P_MAX_LEN] = 0;
76+
{
77+
// don't split utf-8 code point
78+
size_t i = P_MAX_LEN;
79+
while( i > 0 && ( static_cast<uint8_t>(p[i]) & 0b1100'0000 ) == 0b1000'0000 ) --i;
80+
p[i] = '\0';
81+
}
7782

7883
GameRules()->CheckChatText( pPlayer, p );
7984

0 commit comments

Comments
 (0)