Merge pull request #240 from WPMGPRoSToTeMa/RemoveIdAndListIdFixes

RemoveId and ListId fixes
This commit is contained in:
theAsmodai 2016-09-08 10:15:15 +03:00 committed by GitHub
commit 6e411347bd

View File

@ -6761,11 +6761,15 @@ void SV_RemoveId_f(void)
} }
slot--; slot--;
USERID_t id; USERID_t id = userfilters[slot].userid;
Q_memcpy(&id, &userfilters[slot].userid, sizeof(id));
#ifdef REHLDS_FIXES
// memmove must support zero num
Q_memmove(&userfilters[slot], &userfilters[slot + 1], (numuserfilters - (slot + 1)) * sizeof(userfilter_t));
#else // REHLDS_FIXES
if (slot + 1 < numuserfilters) if (slot + 1 < numuserfilters)
Q_memcpy(&userfilters[slot], &userfilters[slot + 1], (numuserfilters - (slot + 1)) * sizeof(userfilter_t)); Q_memcpy(&userfilters[slot], &userfilters[slot + 1], (numuserfilters - (slot + 1)) * sizeof(userfilter_t));
#endif // REHLDS_FIXES
numuserfilters--; numuserfilters--;
Con_Printf("UserID filter removed for %s, id %s\n", idstring, SV_GetIDString(&id)); Con_Printf("UserID filter removed for %s, id %s\n", idstring, SV_GetIDString(&id));
@ -6773,7 +6777,9 @@ void SV_RemoveId_f(void)
else else
{ {
#ifdef REHLDS_FIXES #ifdef REHLDS_FIXES
idstring = SV_GetIDString(SV_StringToUserID(idstring)); // Wanna use Mem_Strdup, but it is a heap allocation and need properly free (after Con_Printf and before return, in two places)
char _idstring[64]; // TODO: create a constant for 64 magic number
idstring = Q_strcpy(_idstring, SV_GetIDString(SV_StringToUserID(idstring)));
#else #else
if (!Q_strnicmp(idstring, "STEAM_", 6) || !Q_strnicmp(idstring, "VALVE_", 6)) if (!Q_strnicmp(idstring, "STEAM_", 6) || !Q_strnicmp(idstring, "VALVE_", 6))
{ {
@ -6786,8 +6792,13 @@ void SV_RemoveId_f(void)
{ {
if (!Q_stricmp(SV_GetIDString(&userfilters[i].userid), idstring)) if (!Q_stricmp(SV_GetIDString(&userfilters[i].userid), idstring))
{ {
#ifdef REHLDS_FIXES
// memmove must support zero num
Q_memmove(&userfilters[i], &userfilters[i + 1], (numuserfilters - (i + 1)) * sizeof(userfilter_t));
#else // REHLDS_FIXES
if (i + 1 < numuserfilters) if (i + 1 < numuserfilters)
Q_memmove(&userfilters[i], &userfilters[i + 1], (numuserfilters - (i + 1)) * sizeof(userfilter_t)); Q_memcpy(&userfilters[i], &userfilters[i + 1], (numuserfilters - (i + 1)) * sizeof(userfilter_t));
#endif // REHLDS_FIXES
numuserfilters--; numuserfilters--;
Con_Printf("UserID filter removed for %s\n", idstring); Con_Printf("UserID filter removed for %s\n", idstring);
@ -6838,11 +6849,11 @@ void SV_ListId_f(void)
{ {
if (userfilters[i].banTime == 0.0f) if (userfilters[i].banTime == 0.0f)
{ {
Con_Printf("%i %s : permanent\n", i, SV_GetIDString(&userfilters[i].userid)); Con_Printf("%i %s : permanent\n", i+1, SV_GetIDString(&userfilters[i].userid));
} }
else else
{ {
Con_Printf("%i %s : %.3f min\n", i, SV_GetIDString(&userfilters[i].userid), userfilters[i].banTime); Con_Printf("%i %s : %.3f min\n", i+1, SV_GetIDString(&userfilters[i].userid), userfilters[i].banTime);
} }
} }
} }