FWGS / xash3d-fwgs

Xash3D FWGS engine
1.59k stars 242 forks source link

[Linux] [MOD: Team Fortress Classic] Не отправляется сообщение в чат содержащее только кириллицу #1329

Open Vladislav4KZ opened 1 year ago

Vladislav4KZ commented 1 year ago

На Windows такой проблемы нет. (точнее проявляется только в определённых моментах)

Все серверы работают на линуксе, и там присутствует данный баг.

Если в чате помимо текста на кириллице, добавить точку, латинскую букву или другой символ, то сообщение отправляется в чат.

Эта проблема не зависит от версии клиента, она проявляется как и на оригинальном стимовском клиенте, так и на https://github.com/Velaron/tf15-client

Я ранее сообщал немного о другом баге, что если в чате содержатся определённые символы кириллицы, и при этом нет латиницы или спецсимволов, то сообщение не отправляется в чат даже на Windows и даже в игре, запущенной на GoldSource https://github.com/FWGS/xash3d-fwgs/issues/561

Вкратце, на линуксе в чат не отправляется НЕ ЕДИНАЯ буква кириллицы без точки, а на Windows не отправляется текст, содержащий только определённые буквы кириллицы

SNMetamorph commented 1 year ago

Это баг, который есть во многих халфомодах. И связан он с функцией Host_Say в серверной библиотеке. Там строка побайтово проверяется на условие !isspace(character) (это такая своеобразная проверка на то, содержит ли строка буквы/цифры). Однако, с UTF-8 строками подобная проверка несовместима, потому и не работает кириллица, и любые другие символы, отличные от латиницы. А поведение бага на винде и линуксе разное, потому что функция isspace стандартной библиотеки в винде и линуксе реализована по разному.

SNMetamorph commented 1 year ago

Причём как я понял, это характерно именно для модов на старом HLSDK, ибо начиная с версии 2.3, там уже есть валидная проверка на UTF-8 строки https://github.com/alliedmodders/hlsdk/blob/a0edb7792a96998d349325bebab8ea41ec5cb239/dlls/client.cpp#L393