From caa37dc3fc9e0348a0f2441f04d7e73a43b5bb2a Mon Sep 17 00:00:00 2001 From: BotoX Date: Sun, 12 Feb 2017 19:00:58 +0100 Subject: [PATCH] NameFilter: Freaking unicode. --- NameFilter/scripting/NameFilter.sp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/NameFilter/scripting/NameFilter.sp b/NameFilter/scripting/NameFilter.sp index 49225f34..02c0a147 100644 --- a/NameFilter/scripting/NameFilter.sp +++ b/NameFilter/scripting/NameFilter.sp @@ -190,7 +190,7 @@ void LoadConfig() char sError[256]; RegexError iError; - g_FilterExpr = CompileRegex(sBuffer, 0, sError, sizeof(sError), iError); + g_FilterExpr = CompileRegex(sBuffer, PCRE_UTF8, sError, sizeof(sError), iError); if(iError != REGEX_ERROR_NONE) { delete Config; @@ -206,7 +206,7 @@ void LoadConfig() { Config.GetString(NULL_STRING, sBuffer, sizeof(sBuffer)); - Handle hRegex = CompileRegex(sBuffer, 0, sError, sizeof(sError), iError); + Handle hRegex = CompileRegex(sBuffer, PCRE_UTF8, sError, sizeof(sError), iError); if(iError != REGEX_ERROR_NONE) LogError("Error parsing banned filter: %s", sError); else @@ -295,23 +295,26 @@ bool FilterName(int client, char[] sName, int Length = MAX_NAME_LENGTH) } } + if(!bChanged) + bChanged = TerminateNameUTF8(sName); + if(bChanged) { + TerminateNameUTF8(sName); + if(strlen(sName) < 2) { int RandomName = client % g_ReplacementNames.Length; g_ReplacementNames.GetString(RandomName, sName, Length); return true; } - - TerminateNameUTF8(sName); } return bChanged; } // ensures that utf8 names are properly terminated -stock void TerminateNameUTF8(char[] name) +stock bool TerminateNameUTF8(char[] name) { int len = strlen(name); for(int i = 0; i < len; i++) @@ -322,10 +325,11 @@ stock void TerminateNameUTF8(char[] name) if(len - i < bytes) { name[i] = '\0'; - return; + return true; } i += bytes - 1; } } + return false; }