mirror of
https://github.com/rehlds/rehlds.git
synced 2025-01-04 02:55:50 +03:00
Fixed issues found by Coverity in the engine
This commit is contained in:
parent
e4134d144a
commit
1463a1a2f8
@ -186,6 +186,11 @@ int COM_SizeofResourceList(resource_t *pList, resourceinfo_t *ri)
|
|||||||
Q_memset(ri, 0, sizeof(*ri));
|
Q_memset(ri, 0, sizeof(*ri));
|
||||||
for (p = pList->pNext; p != pList; p = p->pNext)
|
for (p = pList->pNext; p != pList; p = p->pNext)
|
||||||
{
|
{
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
//skip resources with invalid type
|
||||||
|
if (p->type >= rt_max)
|
||||||
|
continue;
|
||||||
|
#endif
|
||||||
nSize += p->nDownloadSize;
|
nSize += p->nDownloadSize;
|
||||||
if (p->type != t_model || p->nIndex != 1)
|
if (p->type != t_model || p->nIndex != 1)
|
||||||
{
|
{
|
||||||
|
@ -822,6 +822,10 @@ uint32 MSG_ReadBits(int numbits)
|
|||||||
{
|
{
|
||||||
uint32 result;
|
uint32 result;
|
||||||
|
|
||||||
|
if (numbits > 32) {
|
||||||
|
rehlds_syserror("%s: invalid numbits %d\n", __FUNCTION__, numbits);
|
||||||
|
}
|
||||||
|
|
||||||
if (msg_badread)
|
if (msg_badread)
|
||||||
{
|
{
|
||||||
result = 1;
|
result = 1;
|
||||||
|
@ -212,7 +212,7 @@ void Draw_MiptexTexture(cachewad_t *wad, unsigned char *data)
|
|||||||
tex->name[15] = 0;
|
tex->name[15] = 0;
|
||||||
}
|
}
|
||||||
#ifdef SWDS
|
#ifdef SWDS
|
||||||
if (pal[765] || pal[766] || pal[767] != -1)
|
if (pal[765] || pal[766] || pal[767] != 0xFF)
|
||||||
tex->name[0] = '}';
|
tex->name[0] = '}';
|
||||||
else
|
else
|
||||||
tex->name[0] = '{';
|
tex->name[0] = '{';
|
||||||
@ -224,7 +224,7 @@ void Draw_MiptexTexture(cachewad_t *wad, unsigned char *data)
|
|||||||
pal[3 * i + 1] = texgammatable[pal[3 * i + 1] & 0xFF];
|
pal[3 * i + 1] = texgammatable[pal[3 * i + 1] & 0xFF];
|
||||||
pal[3 * i + 2] = texgammatable[pal[3 * i + 2] & 0xFF];
|
pal[3 * i + 2] = texgammatable[pal[3 * i + 2] & 0xFF];
|
||||||
}
|
}
|
||||||
if (pal[765] || pal[766] || pal[767] != -1)
|
if (pal[765] || pal[766] || pal[767] != 0xFF)
|
||||||
{
|
{
|
||||||
tex->name[0] = '}';
|
tex->name[0] = '}';
|
||||||
if (gfCustomBuild)
|
if (gfCustomBuild)
|
||||||
@ -313,7 +313,7 @@ NOXREF int Draw_DecalIndex(int id)
|
|||||||
//Used hw -> CL_Restore
|
//Used hw -> CL_Restore
|
||||||
char tmp[32];
|
char tmp[32];
|
||||||
char *pName;
|
char *pName;
|
||||||
if (!decal_names[id])
|
if (!decal_names[id][0])
|
||||||
Sys_Error("Used decal #%d without a name\n", id);
|
Sys_Error("Used decal #%d without a name\n", id);
|
||||||
|
|
||||||
pName = decal_names[id];
|
pName = decal_names[id];
|
||||||
@ -481,8 +481,8 @@ void Decal_MergeInDecals(cachewad_t *pwad, const char *pathID)
|
|||||||
|
|
||||||
pwad->basedirs = (char **)Mem_Malloc(sizeof(char *));
|
pwad->basedirs = (char **)Mem_Malloc(sizeof(char *));
|
||||||
*decal_wad->basedirs = Mem_Strdup(pathID);
|
*decal_wad->basedirs = Mem_Strdup(pathID);
|
||||||
decal_wad->lumppathindices = (int *)Mem_Malloc(sizeof(int *) * decal_wad->cacheMax);
|
decal_wad->lumppathindices = (int *)Mem_Malloc(sizeof(int) * decal_wad->cacheMax);
|
||||||
Q_memset(decal_wad->lumppathindices, 0, sizeof(int *) * decal_wad->cacheMax);
|
Q_memset(decal_wad->lumppathindices, 0, sizeof(int) * decal_wad->cacheMax);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -501,8 +501,8 @@ void Decal_MergeInDecals(cachewad_t *pwad, const char *pathID)
|
|||||||
Draw_AllocateCacheSpace(final, final->cacheMax, 0);
|
Draw_AllocateCacheSpace(final, final->cacheMax, 0);
|
||||||
final->pfnCacheBuild = decal_wad->pfnCacheBuild;
|
final->pfnCacheBuild = decal_wad->pfnCacheBuild;
|
||||||
final->cacheExtra = decal_wad->cacheExtra;
|
final->cacheExtra = decal_wad->cacheExtra;
|
||||||
final->lumppathindices = (int *)Mem_Malloc(sizeof(int *) * final->cacheMax);
|
final->lumppathindices = (int *)Mem_Malloc(sizeof(int) * final->cacheMax);
|
||||||
Q_memset(final->lumppathindices, 0, sizeof(int *) * final->cacheMax);
|
Q_memset(final->lumppathindices, 0, sizeof(int) * final->cacheMax);
|
||||||
|
|
||||||
final->numpaths = 2;
|
final->numpaths = 2;
|
||||||
final->basedirs = (char **)Mem_Malloc(sizeof(char *) * 2);
|
final->basedirs = (char **)Mem_Malloc(sizeof(char *) * 2);
|
||||||
|
@ -10,8 +10,8 @@ uint32 DELTAJIT_CreateMask(int startBit, int endBit) {
|
|||||||
if (endBit > 32) endBit = 32;
|
if (endBit > 32) endBit = 32;
|
||||||
|
|
||||||
uint32 res = 0xFFFFFFFF;
|
uint32 res = 0xFFFFFFFF;
|
||||||
res &= (0xFFFFFFFF << startBit);
|
res &= startBit < 32 ? (0xFFFFFFFF << startBit) : 0;
|
||||||
res &= (0xFFFFFFFF >> (32 - endBit));
|
res &= endBit > 0 ? (0xFFFFFFFF >> (32 - endBit)) : 0;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,10 @@ void DELTAJIT_CreateDescription(delta_t* delta, deltajitdata_t &jitdesc) {
|
|||||||
blockId++;
|
blockId++;
|
||||||
firstBlock = false;
|
firstBlock = false;
|
||||||
}
|
}
|
||||||
blockField->last = true;
|
|
||||||
|
if (blockField) {
|
||||||
|
blockField->last = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,7 +517,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
jitasm::Reg32 neededBits = ebx;
|
jitasm::Reg32 neededBits = ebx;
|
||||||
jitasm::Reg32 highestBit = ebp;
|
jitasm::Reg32 highestBit = ebp;
|
||||||
size_t highest_id;
|
size_t highest_id = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
CDeltaTestDeltaJIT::CDeltaTestDeltaJIT(deltajitdata_t *_jitdesc) : jitdesc(_jitdesc)
|
CDeltaTestDeltaJIT::CDeltaTestDeltaJIT(deltajitdata_t *_jitdesc) : jitdesc(_jitdesc)
|
||||||
@ -607,6 +610,7 @@ CDeltaJit::CDeltaJit(delta_t* _delta, CDeltaClearMarkFieldsJIT* _cleanMarkCheckF
|
|||||||
delta = _delta;
|
delta = _delta;
|
||||||
cleanMarkCheckFunc = _cleanMarkCheckFunc;
|
cleanMarkCheckFunc = _cleanMarkCheckFunc;
|
||||||
testDeltaFunc = _testDeltaFunc;
|
testDeltaFunc = _testDeltaFunc;
|
||||||
|
markedFieldsMaskSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDeltaJit::~CDeltaJit() {
|
CDeltaJit::~CDeltaJit() {
|
||||||
|
@ -325,7 +325,11 @@ int FileSystem_SetGameDirectory(const char *pDefaultDir, const char *pGameDir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pchLang = CRehldsPlatformHolder::get()->SteamApps() ? CRehldsPlatformHolder::get()->SteamApps()->GetCurrentGameLanguage() : NULL;
|
pchLang = CRehldsPlatformHolder::get()->SteamApps() ? CRehldsPlatformHolder::get()->SteamApps()->GetCurrentGameLanguage() : NULL;
|
||||||
Q_strncpy(language, pchLang ? pchLang : "english", sizeof(language));
|
Q_strncpy(language, pchLang ? pchLang : "english", ARRAYSIZE(language));
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
language[ARRAYSIZE(language) - 1] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!g_bIsDedicatedServer && !IsGameSubscribed(pGameDir))
|
if (!g_bIsDedicatedServer && !IsGameSubscribed(pGameDir))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -469,7 +473,10 @@ int FileSystem_AddFallbackGameDir(const char *pGameDir)
|
|||||||
char language[128];
|
char language[128];
|
||||||
|
|
||||||
const char * pchLang = CRehldsPlatformHolder::get()->SteamApps() ? CRehldsPlatformHolder::get()->SteamApps()->GetCurrentGameLanguage() : NULL;
|
const char * pchLang = CRehldsPlatformHolder::get()->SteamApps() ? CRehldsPlatformHolder::get()->SteamApps()->GetCurrentGameLanguage() : NULL;
|
||||||
Q_strncpy(language, pchLang ? pchLang : "english", sizeof(language));
|
Q_strncpy(language, pchLang ? pchLang : "english", ARRAYSIZE(language));
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
language[ARRAYSIZE(language) - 1] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (strlen(language) != 0 && Q_stricmp(language, "english"))
|
if (strlen(language) != 0 && Q_stricmp(language, "english"))
|
||||||
{
|
{
|
||||||
@ -484,7 +491,13 @@ int FileSystem_AddFallbackGameDir(const char *pGameDir)
|
|||||||
/* <28fd7> ../engine/filesystem.cpp:626 */
|
/* <28fd7> ../engine/filesystem.cpp:626 */
|
||||||
int FileSystem_Init(char *basedir, void *voidfilesystemFactory)
|
int FileSystem_Init(char *basedir, void *voidfilesystemFactory)
|
||||||
{
|
{
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
Q_strncpy(s_pBaseDir, basedir, ARRAYSIZE(s_pBaseDir));
|
||||||
|
s_pBaseDir[ARRAYSIZE(s_pBaseDir) - 1] = 0;
|
||||||
|
#else
|
||||||
Q_strcpy(s_pBaseDir, basedir);
|
Q_strcpy(s_pBaseDir, basedir);
|
||||||
|
#endif
|
||||||
|
|
||||||
host_parms.basedir = s_pBaseDir;
|
host_parms.basedir = s_pBaseDir;
|
||||||
|
|
||||||
if (FileSystem_LoadDLL((CreateInterfaceFn)voidfilesystemFactory))
|
if (FileSystem_LoadDLL((CreateInterfaceFn)voidfilesystemFactory))
|
||||||
|
@ -339,7 +339,7 @@ void FS_Rename(const char *originalName, const char *newName)
|
|||||||
char localPath[512];
|
char localPath[512];
|
||||||
char newPath[512];
|
char newPath[512];
|
||||||
|
|
||||||
if (FS_GetLocalPath(originalName, localPath, 512))
|
if (FS_GetLocalPath(originalName, localPath, ARRAYSIZE(localPath)))
|
||||||
{
|
{
|
||||||
Q_strcpy(newPath, localPath);
|
Q_strcpy(newPath, localPath);
|
||||||
cut = strstr(newPath, originalName);
|
cut = strstr(newPath, originalName);
|
||||||
@ -347,7 +347,13 @@ void FS_Rename(const char *originalName, const char *newName)
|
|||||||
if (cut)
|
if (cut)
|
||||||
{
|
{
|
||||||
*cut = 0;
|
*cut = 0;
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
Q_strncat(newPath, newName, ARRAYSIZE(newPath) - strlen(newPath));
|
||||||
|
newPath[ARRAYSIZE(newPath) - 1] = 0;
|
||||||
|
#else
|
||||||
Q_strcat(newPath, newName);
|
Q_strcat(newPath, newName);
|
||||||
|
#endif
|
||||||
|
|
||||||
rename(localPath, newPath);
|
rename(localPath, newPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,12 +52,12 @@ typedef struct hash_pack_queue_s
|
|||||||
struct hash_pack_queue_s *next;
|
struct hash_pack_queue_s *next;
|
||||||
} hash_pack_queue_t;
|
} hash_pack_queue_t;
|
||||||
|
|
||||||
/* <29e0a> ../engine/hashpak.c:20 */
|
/* <29e0a> ../engine/hashpak.c:20 */
|
||||||
typedef struct hash_pack_entry_s
|
typedef struct hash_pack_entry_s
|
||||||
{
|
{
|
||||||
resource_t resource;
|
resource_t resource;
|
||||||
int nOffset;
|
int nOffset;
|
||||||
int nFileLength;
|
int nFileLength;
|
||||||
} hash_pack_entry_t;
|
} hash_pack_entry_t;
|
||||||
|
|
||||||
/* <29e4e> ../engine/hashpak.c:27 */
|
/* <29e4e> ../engine/hashpak.c:27 */
|
||||||
|
@ -233,7 +233,6 @@ void Host_Motd_f(void)
|
|||||||
FileHandle_t pFile;
|
FileHandle_t pFile;
|
||||||
char *pFileList;
|
char *pFileList;
|
||||||
char *next;
|
char *next;
|
||||||
char *now;
|
|
||||||
|
|
||||||
pFileList = motdfile.string;
|
pFileList = motdfile.string;
|
||||||
if (*pFileList == '/' || Q_strstr(pFileList, ":") || Q_strstr(pFileList, "..") || Q_strstr(pFileList, "\\"))
|
if (*pFileList == '/' || Q_strstr(pFileList, ":") || Q_strstr(pFileList, "..") || Q_strstr(pFileList, "\\"))
|
||||||
@ -250,11 +249,12 @@ void Host_Motd_f(void)
|
|||||||
length = FS_Size(pFile);
|
length = FS_Size(pFile);
|
||||||
if (length > 0)
|
if (length > 0)
|
||||||
{
|
{
|
||||||
now = (char *)Mem_Malloc(length + 1);
|
char* buf = (char *)Mem_Malloc(length + 1);
|
||||||
if (now)
|
if (buf)
|
||||||
{
|
{
|
||||||
FS_Read(now, length, 1, pFile);
|
FS_Read(buf, length, 1, pFile);
|
||||||
now[length] = 0;
|
buf[length] = 0;
|
||||||
|
char* now = buf;
|
||||||
Con_Printf("motd:");
|
Con_Printf("motd:");
|
||||||
next = strchr(now, '\n');
|
next = strchr(now, '\n');
|
||||||
while (next != NULL)
|
while (next != NULL)
|
||||||
@ -264,9 +264,10 @@ void Host_Motd_f(void)
|
|||||||
now = next + 1;
|
now = next + 1;
|
||||||
next = strchr(now, '\n');
|
next = strchr(now, '\n');
|
||||||
}
|
}
|
||||||
if (now)
|
|
||||||
Con_Printf("%s\n", now);
|
Con_Printf("%s\n", now);
|
||||||
Mem_Free(now);
|
|
||||||
|
Mem_Free(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FS_Close(pFile);
|
FS_Close(pFile);
|
||||||
@ -555,9 +556,9 @@ void Host_Status_f(void)
|
|||||||
client_t *client;
|
client_t *client;
|
||||||
int seconds;
|
int seconds;
|
||||||
int minutes;
|
int minutes;
|
||||||
int hltv_slots;
|
int hltv_slots = 0;
|
||||||
int hltv_specs;
|
int hltv_specs = 0;
|
||||||
int hltv_delay;
|
int hltv_delay = 0;
|
||||||
char *val;
|
char *val;
|
||||||
int hours;
|
int hours;
|
||||||
int j;
|
int j;
|
||||||
@ -1034,7 +1035,11 @@ const char *Host_FindRecentSave(char *pNameBuf)
|
|||||||
const char *findfn;
|
const char *findfn;
|
||||||
char basefilename[MAX_PATH];
|
char basefilename[MAX_PATH];
|
||||||
int found;
|
int found;
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
int32 newest = 0;
|
||||||
|
#else
|
||||||
int32 newest;
|
int32 newest;
|
||||||
|
#endif
|
||||||
int32 ft;
|
int32 ft;
|
||||||
char szPath[MAX_PATH];
|
char szPath[MAX_PATH];
|
||||||
|
|
||||||
@ -1049,7 +1054,7 @@ const char *Host_FindRecentSave(char *pNameBuf)
|
|||||||
{
|
{
|
||||||
Q_snprintf(szPath, sizeof(szPath), "%s%s", Host_SaveGameDirectory(), findfn);
|
Q_snprintf(szPath, sizeof(szPath), "%s%s", Host_SaveGameDirectory(), findfn);
|
||||||
ft = FS_GetFileTime(szPath);
|
ft = FS_GetFileTime(szPath);
|
||||||
if (ft > 0 && (!ft || newest < ft))
|
if (ft > 0 && (!found || newest < ft))
|
||||||
{
|
{
|
||||||
found = 1;
|
found = 1;
|
||||||
newest = ft;
|
newest = ft;
|
||||||
@ -2563,7 +2568,7 @@ void Host_Say(qboolean teamonly)
|
|||||||
|
|
||||||
for (j = 0, client = g_psvs.clients; j < g_psvs.maxclients; j++, client++)
|
for (j = 0, client = g_psvs.clients; j < g_psvs.maxclients; j++, client++)
|
||||||
{
|
{
|
||||||
if (!client || !client->active || !client->spawned || client->fakeclient)
|
if (!client->active || !client->spawned || client->fakeclient)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
host_client = client;
|
host_client = client;
|
||||||
@ -2630,7 +2635,7 @@ void Host_Tell_f(void)
|
|||||||
p[Q_strlen(p) - 1] = 0;
|
p[Q_strlen(p) - 1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
j = sizeof(text) - 2 - Q_strlen(text);
|
j = ARRAYSIZE(text) - 2 - Q_strlen(text);
|
||||||
if (Q_strlen(p) > (unsigned int)j)
|
if (Q_strlen(p) > (unsigned int)j)
|
||||||
p[j] = 0;
|
p[j] = 0;
|
||||||
|
|
||||||
|
@ -1158,6 +1158,11 @@ void Netchan_CreateFileFragmentsFromBuffer(qboolean server, netchan_t *chan, con
|
|||||||
else
|
else
|
||||||
rehlds_syserror(__FUNCTION__ "Reverse me: client-side code");
|
rehlds_syserror(__FUNCTION__ "Reverse me: client-side code");
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
if (bCompressed) {
|
||||||
|
Mem_Free(pbuf);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1196,6 +1201,11 @@ void Netchan_CreateFileFragmentsFromBuffer(qboolean server, netchan_t *chan, con
|
|||||||
p->next = wait;
|
p->next = wait;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
if (bCompressed) {
|
||||||
|
Mem_Free(pbuf);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <66564> ../engine/net_chan.c:1500 */
|
/* <66564> ../engine/net_chan.c:1500 */
|
||||||
@ -1224,28 +1234,24 @@ int Netchan_CreateFileFragments(qboolean server, netchan_t *chan, const char *fi
|
|||||||
|
|
||||||
Q_snprintf(compressedfilename, sizeof compressedfilename, "%s.ztmp", filename);
|
Q_snprintf(compressedfilename, sizeof compressedfilename, "%s.ztmp", filename);
|
||||||
compressedFileTime = FS_GetFileTime(compressedfilename);
|
compressedFileTime = FS_GetFileTime(compressedfilename);
|
||||||
if (compressedFileTime >= FS_GetFileTime(filename))
|
if (compressedFileTime >= FS_GetFileTime(filename) && (hfile = FS_Open(compressedfilename, "rb")))
|
||||||
{
|
{
|
||||||
hfile = FS_Open(compressedfilename, "rb");
|
filesize = FS_Size(hfile);
|
||||||
if (hfile)
|
FS_Close(hfile);
|
||||||
|
bCompressed = 1;
|
||||||
|
hfile = FS_Open(filename, "rb");
|
||||||
|
if (!hfile)
|
||||||
{
|
{
|
||||||
filesize = FS_Size(hfile);
|
Con_Printf("Warning: Unable to open %s for transfer\n", filename);
|
||||||
FS_Close(hfile);
|
return 0;
|
||||||
bCompressed = 1;
|
}
|
||||||
hfile = FS_Open(filename, "rb");
|
|
||||||
if (!hfile)
|
|
||||||
{
|
|
||||||
Con_Printf("Warning: Unable to open %s for transfer\n", filename);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uncompressed_size = FS_Size(hfile);
|
uncompressed_size = FS_Size(hfile);
|
||||||
if (uncompressed_size > sv_filetransfermaxsize.value)
|
if (uncompressed_size > sv_filetransfermaxsize.value)
|
||||||
{
|
{
|
||||||
FS_Close(hfile);
|
FS_Close(hfile);
|
||||||
Con_Printf("Warning: File %s is too big to transfer from host %s\n", filename, NET_AdrToString(chan->remote_address));
|
Con_Printf("Warning: File %s is too big to transfer from host %s\n", filename, NET_AdrToString(chan->remote_address));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1430,7 +1436,7 @@ qboolean Netchan_CopyFileFragments(netchan_t *chan)
|
|||||||
char compressor[32];
|
char compressor[32];
|
||||||
fragbuf_s *n;
|
fragbuf_s *n;
|
||||||
qboolean bCompressed;
|
qboolean bCompressed;
|
||||||
size_t uncompressedSize;
|
unsigned int uncompressedSize;
|
||||||
|
|
||||||
|
|
||||||
if (!chan->incomingready[FRAG_FILE_STREAM])
|
if (!chan->incomingready[FRAG_FILE_STREAM])
|
||||||
@ -1456,7 +1462,16 @@ qboolean Netchan_CopyFileFragments(netchan_t *chan)
|
|||||||
if (!Q_stricmp(compressor, "bz2"))
|
if (!Q_stricmp(compressor, "bz2"))
|
||||||
bCompressed = TRUE;
|
bCompressed = TRUE;
|
||||||
|
|
||||||
uncompressedSize = MSG_ReadLong();
|
uncompressedSize = (unsigned int)MSG_ReadLong();
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
if (uncompressedSize > 1024 * 64) {
|
||||||
|
Con_Printf("Received too large file (size=%u)\nFlushing input queue\n", uncompressedSize);
|
||||||
|
Netchan_FlushIncoming(chan, 1);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Q_strlen(filename) <= 0)
|
if (Q_strlen(filename) <= 0)
|
||||||
{
|
{
|
||||||
Con_Printf("File fragment received with no filename\nFlushing input queue\n");
|
Con_Printf("File fragment received with no filename\nFlushing input queue\n");
|
||||||
@ -1594,6 +1609,10 @@ qboolean Netchan_CopyFileFragments(netchan_t *chan)
|
|||||||
{
|
{
|
||||||
Con_Printf("File open failed %s\n", filename);
|
Con_Printf("File open failed %s\n", filename);
|
||||||
Netchan_FlushIncoming(chan, 1);
|
Netchan_FlushIncoming(chan, 1);
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
Mem_Free(buffer);
|
||||||
|
#endif
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -974,6 +974,10 @@ qboolean NET_QueuePacket(netsrc_t sock)
|
|||||||
int err; // 1028
|
int err; // 1028
|
||||||
unsigned char buf[MAX_UDP_PACKET]; // 1029
|
unsigned char buf[MAX_UDP_PACKET]; // 1029
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
ret = -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
for (protocol = 0; protocol < 2; protocol++)
|
for (protocol = 0; protocol < 2; protocol++)
|
||||||
#else
|
#else
|
||||||
@ -1849,18 +1853,25 @@ void NET_GetLocalAddress(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Q_strcmp(ipname.string, "localhost"))
|
if (Q_strcmp(ipname.string, "localhost"))
|
||||||
Q_strncpy(buff, ipname.string, 511);
|
Q_strncpy(buff, ipname.string, ARRAYSIZE(buff) - 1);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
CRehldsPlatformHolder::get()->gethostname(buff, 512);
|
CRehldsPlatformHolder::get()->gethostname(buff, ARRAYSIZE(buff));
|
||||||
#else
|
#else
|
||||||
gethostname(buff, 512);
|
gethostname(buff, ARRAYSIZE(buff));
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
}
|
}
|
||||||
|
|
||||||
buff[511] = 0;
|
buff[ARRAYSIZE(buff) - 1] = 0;
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
//check if address is valid
|
||||||
|
if (NET_StringToAdr(buff, &net_local_adr))
|
||||||
|
{
|
||||||
|
#else
|
||||||
NET_StringToAdr(buff, &net_local_adr);
|
NET_StringToAdr(buff, &net_local_adr);
|
||||||
|
#endif
|
||||||
namelen = sizeof(address);
|
namelen = sizeof(address);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (CRehldsPlatformHolder::get()->getsockname((SOCKET)ip_sockets[NS_SERVER], (struct sockaddr *)&address, (socklen_t *)&namelen) == SOCKET_ERROR)
|
if (CRehldsPlatformHolder::get()->getsockname((SOCKET)ip_sockets[NS_SERVER], (struct sockaddr *)&address, (socklen_t *)&namelen) == SOCKET_ERROR)
|
||||||
@ -1882,6 +1893,14 @@ void NET_GetLocalAddress(void)
|
|||||||
Con_Printf("Server IP address %s\n", NET_AdrToString(net_local_adr));
|
Con_Printf("Server IP address %s\n", NET_AdrToString(net_local_adr));
|
||||||
Cvar_Set("net_address", va(NET_AdrToString(net_local_adr)));
|
Cvar_Set("net_address", va(NET_AdrToString(net_local_adr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Con_Printf("Could not get TCP/IP address, Invalid hostname '%s'\n", buff);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -481,8 +481,10 @@ msurface_t *SurfaceAtPoint(model_t *pModel, mnode_t *node, vec_t *start, vec_t *
|
|||||||
if (surf)
|
if (surf)
|
||||||
return surf;
|
return surf;
|
||||||
|
|
||||||
|
/* Unreachable code
|
||||||
if (t == s)
|
if (t == s)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
*/
|
||||||
|
|
||||||
for (int i = 0; i < node->numsurfaces; i++)
|
for (int i = 0; i < node->numsurfaces; i++)
|
||||||
{
|
{
|
||||||
@ -2100,7 +2102,9 @@ void PF_MessageBegin_I(int msg_dest, int msg_type, const float *pOrigin, edict_t
|
|||||||
gMsgOrigin[1] = pOrigin[1];
|
gMsgOrigin[1] = pOrigin[1];
|
||||||
gMsgOrigin[2] = pOrigin[2];
|
gMsgOrigin[2] = pOrigin[2];
|
||||||
}
|
}
|
||||||
Host_IsSinglePlayerGame();
|
|
||||||
|
//No idea why is it called here
|
||||||
|
//Host_IsSinglePlayerGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
gMsgBuffer.flags = SIZEBUF_ALLOW_OVERFLOW;
|
gMsgBuffer.flags = SIZEBUF_ALLOW_OVERFLOW;
|
||||||
|
@ -167,7 +167,7 @@ NOXREF void R_AddToStudioCache(float frame, int sequence, const vec_t *angles, c
|
|||||||
|
|
||||||
Q_memcpy(&cache_hull[nCurrentHull], pHulls, sizeof(hull_t) * numhulls);
|
Q_memcpy(&cache_hull[nCurrentHull], pHulls, sizeof(hull_t) * numhulls);
|
||||||
Q_memcpy(&cache_planes[nCurrentPlane], studio_planes,sizeof(mplane_t) * 6 * numhulls);
|
Q_memcpy(&cache_planes[nCurrentPlane], studio_planes,sizeof(mplane_t) * 6 * numhulls);
|
||||||
Q_memcpy(&cache_hull_hitgroup[nCurrentHull], studio_hull_hitgroup, sizeof(int *) * numhulls);
|
Q_memcpy(&cache_hull_hitgroup[nCurrentHull], studio_hull_hitgroup, sizeof(int) * numhulls);
|
||||||
|
|
||||||
p->numhulls = numhulls;
|
p->numhulls = numhulls;
|
||||||
|
|
||||||
@ -1150,8 +1150,11 @@ int R_GetStudioBounds(const char *filename, float *mins, float *maxs)
|
|||||||
{
|
{
|
||||||
if (LittleLong(*(unsigned int *)pBuffer) == 'TSDI')
|
if (LittleLong(*(unsigned int *)pBuffer) == 'TSDI')
|
||||||
iret = R_StudioComputeBounds((unsigned char*)pBuffer, mins, maxs);
|
iret = R_StudioComputeBounds((unsigned char*)pBuffer, mins, maxs);
|
||||||
|
#ifndef REHLDS_FIXES
|
||||||
|
//wrong release memory code
|
||||||
else
|
else
|
||||||
COM_FreeFile(pBuffer);
|
COM_FreeFile(pBuffer);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usingReadBuffer)
|
if (usingReadBuffer)
|
||||||
|
@ -3385,7 +3385,7 @@ void SV_ConnectionlessPacket(void)
|
|||||||
|
|
||||||
else if (!Q_stricmp(c, "log"))
|
else if (!Q_stricmp(c, "log"))
|
||||||
{
|
{
|
||||||
if (sv_logrelay.value != 0.0f && args && Q_strlen(args) > 4)
|
if (sv_logrelay.value != 0.0f && Q_strlen(args) > 4)
|
||||||
{
|
{
|
||||||
const char *s = &args[Q_strlen("log ")];
|
const char *s = &args[Q_strlen("log ")];
|
||||||
if (s && s[0])
|
if (s && s[0])
|
||||||
@ -3515,7 +3515,7 @@ qboolean SV_FilterPacket(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (i < numipfilters - 1)
|
if (i < numipfilters - 1)
|
||||||
Q_memcpy(curFilter, &curFilter[1], sizeof(ipfilter_t) * (numipfilters - i - 1));
|
memmove(curFilter, &curFilter[1], sizeof(ipfilter_t) * (numipfilters - i - 1));
|
||||||
|
|
||||||
--numipfilters;
|
--numipfilters;
|
||||||
}
|
}
|
||||||
@ -4307,7 +4307,9 @@ qboolean SV_ShouldUpdatePing(client_t *client)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SV_CalcPing(client);
|
//useless call
|
||||||
|
//SV_CalcPing(client);
|
||||||
|
|
||||||
return client->lastcmd.buttons & 0x8000;
|
return client->lastcmd.buttons & 0x8000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6466,9 +6468,7 @@ qboolean IsSafeFileToDownload(const char *filename)
|
|||||||
char lwrfilename[MAX_PATH];
|
char lwrfilename[MAX_PATH];
|
||||||
|
|
||||||
if (!filename)
|
if (!filename)
|
||||||
{
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef REHLDS_FIXES
|
#ifdef REHLDS_FIXES
|
||||||
// FIXED: Allow to download customizations
|
// FIXED: Allow to download customizations
|
||||||
@ -6479,7 +6479,10 @@ qboolean IsSafeFileToDownload(const char *filename)
|
|||||||
#endif // REHLDS_FIXES
|
#endif // REHLDS_FIXES
|
||||||
|
|
||||||
// Convert to lower case
|
// Convert to lower case
|
||||||
Q_strncpy(lwrfilename, filename, sizeof(lwrfilename));
|
Q_strncpy(lwrfilename, filename, ARRAYSIZE(lwrfilename));
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
lwrfilename[ARRAYSIZE(lwrfilename) - 1] = 0;
|
||||||
|
#endif
|
||||||
Q_strlwr(lwrfilename);
|
Q_strlwr(lwrfilename);
|
||||||
|
|
||||||
first = Q_strchr(lwrfilename, '.');
|
first = Q_strchr(lwrfilename, '.');
|
||||||
|
@ -52,8 +52,10 @@ const char *PM_SV_TraceTexture(int ground, vec_t *vstart, vec_t *vend)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
edict_t *pent = &g_psv.edicts[pe->info];
|
edict_t *pent = &g_psv.edicts[pe->info];
|
||||||
|
|
||||||
|
/* Unreachable code
|
||||||
if (!pent)
|
if (!pent)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
*/
|
||||||
return TraceTexture(pent, vstart, vend);
|
return TraceTexture(pent, vstart, vend);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
class CServerRemoteAccess g_ServerRemoteAccess;
|
class CServerRemoteAccess g_ServerRemoteAccess;
|
||||||
|
|
||||||
|
CServerRemoteAccess::CServerRemoteAccess() {
|
||||||
|
m_iBytesSent = 0;
|
||||||
|
m_iBytesReceived = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void CServerRemoteAccess::WriteDataRequest(const void *buffer, int bufferSize)
|
void CServerRemoteAccess::WriteDataRequest(const void *buffer, int bufferSize)
|
||||||
{
|
{
|
||||||
WriteDataRequest_noVirt(buffer, bufferSize);
|
WriteDataRequest_noVirt(buffer, bufferSize);
|
||||||
@ -153,11 +158,20 @@ void CServerRemoteAccess::GetMapList(CUtlBuffer &value)
|
|||||||
Q_strcpy(mapwild, "maps/*.bsp");
|
Q_strcpy(mapwild, "maps/*.bsp");
|
||||||
for (findfn = Sys_FindFirst(mapwild, 0); findfn; findfn = Sys_FindNext(0))
|
for (findfn = Sys_FindFirst(mapwild, 0); findfn; findfn = Sys_FindNext(0))
|
||||||
{
|
{
|
||||||
Q_snprintf(curDir, MAX_PATH, "maps/%s", findfn);
|
Q_snprintf(curDir, ARRAYSIZE(curDir), "maps/%s", findfn);
|
||||||
FS_GetLocalPath(curDir, curDir, MAX_PATH);
|
#ifdef REHLDS_CHECKS
|
||||||
|
curDir[ARRAYSIZE(curDir) - 1] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
FS_GetLocalPath(curDir, curDir, ARRAYSIZE(curDir));
|
||||||
if (Q_strstr(curDir, com_gamedir))
|
if (Q_strstr(curDir, com_gamedir))
|
||||||
{
|
{
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
Q_strncpy(mapName, findfn, ARRAYSIZE(mapName));
|
||||||
|
mapName[ARRAYSIZE(mapName) - 1] = 0;
|
||||||
|
#else
|
||||||
Q_strcpy(mapName, findfn);
|
Q_strcpy(mapName, findfn);
|
||||||
|
#endif
|
||||||
extension = Q_strstr(mapName, ".bsp");
|
extension = Q_strstr(mapName, ".bsp");
|
||||||
if (extension)
|
if (extension)
|
||||||
*extension = 0;
|
*extension = 0;
|
||||||
|
@ -46,6 +46,7 @@ private:
|
|||||||
int m_iBytesReceived;
|
int m_iBytesReceived;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
CServerRemoteAccess();
|
||||||
|
|
||||||
virtual ~CServerRemoteAccess() { }
|
virtual ~CServerRemoteAccess() { }
|
||||||
|
|
||||||
|
@ -183,22 +183,28 @@ void CSteam3Server::OnGSClientApprove(GSClientApprove_t *pGSClientSteam2Accept)
|
|||||||
if (!cl)
|
if (!cl)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char msg[256];
|
|
||||||
if (SV_FilterUser(&cl->network_userid))
|
if (SV_FilterUser(&cl->network_userid))
|
||||||
{
|
{
|
||||||
|
char msg[256];
|
||||||
Q_sprintf(msg, "You have been banned from this server\n");
|
Q_sprintf(msg, "You have been banned from this server\n");
|
||||||
SV_RejectConnection(&cl->netchan.remote_address, msg);
|
SV_RejectConnection(&cl->netchan.remote_address, msg);
|
||||||
SV_DropClient(cl, 0, "STEAM UserID %s is in server ban list\n", SV_GetClientIDString(cl));
|
SV_DropClient(cl, 0, "STEAM UserID %s is in server ban list\n", SV_GetClientIDString(cl));
|
||||||
}
|
}
|
||||||
else if (SV_CheckForDuplicateSteamID(cl) != -1)
|
else if (SV_CheckForDuplicateSteamID(cl) != -1)
|
||||||
{
|
{
|
||||||
|
char msg[256];
|
||||||
Q_sprintf(msg, "Your UserID is already in use on this server.\n");
|
Q_sprintf(msg, "Your UserID is already in use on this server.\n");
|
||||||
SV_RejectConnection(&cl->netchan.remote_address, msg);
|
SV_RejectConnection(&cl->netchan.remote_address, msg);
|
||||||
SV_DropClient(cl, 0, "STEAM UserID %s is already\nin use on this server\n", SV_GetClientIDString(cl));
|
SV_DropClient(cl, 0, "STEAM UserID %s is already\nin use on this server\n", SV_GetClientIDString(cl));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Q_snprintf(msg, 0x200u, "\"%s<%i><%s><>\" STEAM USERID validated\n", cl->name, cl->userid, SV_GetClientIDString(cl));
|
char msg[512];
|
||||||
|
Q_snprintf(msg, ARRAYSIZE(msg), "\"%s<%i><%s><>\" STEAM USERID validated\n", cl->name, cl->userid, SV_GetClientIDString(cl));
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
msg[ARRAYSIZE(msg) - 1] = 0;
|
||||||
|
#endif
|
||||||
Con_DPrintf("%s", msg);
|
Con_DPrintf("%s", msg);
|
||||||
Log_Printf("%s", msg);
|
Log_Printf("%s", msg);
|
||||||
}
|
}
|
||||||
@ -241,6 +247,9 @@ CSteam3Server::CSteam3Server(void) :
|
|||||||
m_CallbackLogonFailure(this, &CSteam3Server::OnLogonFailure),
|
m_CallbackLogonFailure(this, &CSteam3Server::OnLogonFailure),
|
||||||
m_SteamIDGS(1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid)
|
m_SteamIDGS(1, 0, k_EUniverseInvalid, k_EAccountTypeInvalid)
|
||||||
{
|
{
|
||||||
|
m_bHasActivePlayers = false;
|
||||||
|
m_bWantToBeSecure = false;
|
||||||
|
m_bLanOnly = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <ee234> ../engine/sv_steam3.cpp:375 */
|
/* <ee234> ../engine/sv_steam3.cpp:375 */
|
||||||
@ -821,7 +830,8 @@ uint64 Steam_GSGetSteamID()
|
|||||||
/* <f1d2a> ../engine/sv_steam3.cpp:1031 */
|
/* <f1d2a> ../engine/sv_steam3.cpp:1031 */
|
||||||
qboolean Steam_GSBSecure(void)
|
qboolean Steam_GSBSecure(void)
|
||||||
{
|
{
|
||||||
Steam3Server();
|
//useless call
|
||||||
|
//Steam3Server();
|
||||||
return CRehldsPlatformHolder::get()->SteamGameServer()->BSecure();
|
return CRehldsPlatformHolder::get()->SteamGameServer()->BSecure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,6 +126,9 @@ void Sys_GetCDKey(char *pszCDKey, int *nLength, int *bDedicated)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
CRC32_t crc;
|
CRC32_t crc;
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
crc = 0;
|
||||||
|
#endif
|
||||||
CRC32_ProcessBuffer(&crc, hostname, Q_strlen(hostname));
|
CRC32_ProcessBuffer(&crc, hostname, Q_strlen(hostname));
|
||||||
Q_snprintf(key, sizeof(key), "%u", crc);
|
Q_snprintf(key, sizeof(key), "%u", crc);
|
||||||
}
|
}
|
||||||
@ -617,6 +620,7 @@ IBaseInterface *CreateCEngineAPI(void)
|
|||||||
InterfaceReg g_CreateCEngineAPI = InterfaceReg(CreateCEngineAPI, "VENGINE_LAUNCHER_API_VERSION002");
|
InterfaceReg g_CreateCEngineAPI = InterfaceReg(CreateCEngineAPI, "VENGINE_LAUNCHER_API_VERSION002");
|
||||||
|
|
||||||
/* <908b7> ../engine/sys_dll2.cpp:1070 */
|
/* <908b7> ../engine/sys_dll2.cpp:1070 */
|
||||||
|
/* Needs rechecking
|
||||||
NOXREF int BuildMapCycleListHints(char **hints)
|
NOXREF int BuildMapCycleListHints(char **hints)
|
||||||
{
|
{
|
||||||
char szMap[262];
|
char szMap[262];
|
||||||
@ -683,6 +687,7 @@ NOXREF int BuildMapCycleListHints(char **hints)
|
|||||||
Q_strcat(*hints, szMap);
|
Q_strcat(*hints, szMap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
bool CDedicatedServerAPI::Init(char *basedir, char *cmdline, CreateInterfaceFn launcherFactory, CreateInterfaceFn filesystemFactory)
|
bool CDedicatedServerAPI::Init(char *basedir, char *cmdline, CreateInterfaceFn launcherFactory, CreateInterfaceFn filesystemFactory)
|
||||||
{
|
{
|
||||||
@ -695,7 +700,12 @@ bool CDedicatedServerAPI::Init_noVirt(char *basedir, char *cmdline, CreateInterf
|
|||||||
if (!dedicated_)
|
if (!dedicated_)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
#ifdef REHLDS_CHECKS
|
||||||
|
Q_strncpy(this->m_OrigCmd, cmdline, ARRAYSIZE(this->m_OrigCmd));
|
||||||
|
this->m_OrigCmd[ARRAYSIZE(this->m_OrigCmd) - 1] = 0;
|
||||||
|
#else
|
||||||
Q_strcpy(this->m_OrigCmd, cmdline);
|
Q_strcpy(this->m_OrigCmd, cmdline);
|
||||||
|
#endif
|
||||||
if (!strstr(cmdline, "-nobreakpad"))
|
if (!strstr(cmdline, "-nobreakpad"))
|
||||||
{
|
{
|
||||||
CRehldsPlatformHolder::get()->SteamAPI_UseBreakpadCrashHandler(va("%d", build_number()), "Aug 8 2013", "11:17:26", 0, 0, 0);
|
CRehldsPlatformHolder::get()->SteamAPI_UseBreakpadCrashHandler(va("%d", build_number()), "Aug 8 2013", "11:17:26", 0, 0, 0);
|
||||||
|
@ -120,7 +120,9 @@ void Sys_ShutdownGame(void);
|
|||||||
void ClearIOStates(void);
|
void ClearIOStates(void);
|
||||||
|
|
||||||
NOBODY class IBaseInterface *__CreateCEngineAPIIEngineAPI_interface(void);
|
NOBODY class IBaseInterface *__CreateCEngineAPIIEngineAPI_interface(void);
|
||||||
NOXREF int BuildMapCycleListHints(char **hints);
|
|
||||||
|
// Needs rechecking
|
||||||
|
//NOXREF int BuildMapCycleListHints(char **hints);
|
||||||
|
|
||||||
NOBODY class IBaseInterface *__CreateCDedicatedServerAPIIDedicatedServerAPI_interface(void);
|
NOBODY class IBaseInterface *__CreateCDedicatedServerAPIIDedicatedServerAPI_interface(void);
|
||||||
NOBODY void _GLOBAL__sub_I_D_SurfaceCacheForRes(void);
|
NOBODY void _GLOBAL__sub_I_D_SurfaceCacheForRes(void);
|
||||||
|
@ -54,6 +54,10 @@ CEngine::CEngine()
|
|||||||
m_nTrapKey = 0;
|
m_nTrapKey = 0;
|
||||||
m_nTrapButtons = 0;
|
m_nTrapButtons = 0;
|
||||||
m_nQuitting = QUIT_NOTQUITTING;
|
m_nQuitting = QUIT_NOTQUITTING;
|
||||||
|
|
||||||
|
#ifdef REHLDS_FIXES
|
||||||
|
m_fCurTime = 0.0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <95a38> ../engine/sys_engine.cpp:164 */
|
/* <95a38> ../engine/sys_engine.cpp:164 */
|
||||||
|
@ -1128,18 +1128,18 @@ void SV_SingleClipMoveToEntity(edict_t *ent, const vec_t *start, const vec_t *mi
|
|||||||
if (rotated)
|
if (rotated)
|
||||||
{
|
{
|
||||||
vec3_t right;
|
vec3_t right;
|
||||||
vec3_t forward;
|
|
||||||
vec3_t up;
|
vec3_t up;
|
||||||
|
vec3_t forward;
|
||||||
vec3_t temp;
|
vec3_t temp;
|
||||||
|
|
||||||
AngleVectorsTranspose(ent->v.angles, up, right, forward);
|
AngleVectorsTranspose(ent->v.angles, forward, right, up);
|
||||||
temp[0] = trace->plane.normal[0];
|
temp[0] = trace->plane.normal[0];
|
||||||
temp[1] = trace->plane.normal[1];
|
temp[1] = trace->plane.normal[1];
|
||||||
temp[2] = trace->plane.normal[2];
|
temp[2] = trace->plane.normal[2];
|
||||||
|
|
||||||
trace->plane.normal[0] = _DotProduct(up, temp);
|
trace->plane.normal[0] = _DotProduct(forward, temp);
|
||||||
trace->plane.normal[1] = _DotProduct(right, temp);
|
trace->plane.normal[1] = _DotProduct(right, temp);
|
||||||
trace->plane.normal[2] = _DotProduct(forward, temp);
|
trace->plane.normal[2] = _DotProduct(up, temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
trace->endpos[0] = (end[0] - start[0]) * trace->fraction + start[0];
|
trace->endpos[0] = (end[0] - start[0]) * trace->fraction + start[0];
|
||||||
|
@ -828,7 +828,7 @@
|
|||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>REHLDS_FLIGHT_REC;REHLDS_OPT_PEDANTIC;REHLDS_SELF;REHLDS_CHECKS;USE_BREAKPAD_HANDLER;DEDICATED;SWDS;_CRT_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>REHLDS_FIXES;REHLDS_FLIGHT_REC;REHLDS_OPT_PEDANTIC;REHLDS_SELF;REHLDS_CHECKS;USE_BREAKPAD_HANDLER;DEDICATED;SWDS;_CRT_SECURE_NO_WARNINGS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<FloatingPointModel>Precise</FloatingPointModel>
|
<FloatingPointModel>Precise</FloatingPointModel>
|
||||||
<AdditionalOptions>/arch:IA32 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/arch:IA32 %(AdditionalOptions)</AdditionalOptions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
@ -32,6 +32,9 @@ typedef enum
|
|||||||
t_generic,
|
t_generic,
|
||||||
t_eventscript,
|
t_eventscript,
|
||||||
t_world, // Fake type for world, is really t_model
|
t_world, // Fake type for world, is really t_model
|
||||||
|
rt_unk,
|
||||||
|
|
||||||
|
rt_max
|
||||||
} resourcetype_t;
|
} resourcetype_t;
|
||||||
|
|
||||||
|
|
||||||
@ -42,7 +45,7 @@ typedef struct
|
|||||||
|
|
||||||
typedef struct resourceinfo_s
|
typedef struct resourceinfo_s
|
||||||
{
|
{
|
||||||
_resourceinfo_t info[ 8 ];
|
_resourceinfo_t info[ rt_max ];
|
||||||
} resourceinfo_t;
|
} resourceinfo_t;
|
||||||
|
|
||||||
#define RES_FATALIFMISSING (1<<0) // Disconnect if we can't get this file.
|
#define RES_FATALIFMISSING (1<<0) // Disconnect if we can't get this file.
|
||||||
|
Loading…
Reference in New Issue
Block a user