diff --git a/engine/common/net_wins.c b/engine/common/net_wins.c index b4dd8e416..b363f15ac 100644 --- a/engine/common/net_wins.c +++ b/engine/common/net_wins.c @@ -2194,7 +2194,7 @@ int FTENET_GetLocalAddress(int port, qboolean ipx, qboolean ipv4, qboolean ipv6, struct sockaddr_in from; from.sin_family = AF_INET; from.sin_port = port; - memcpy(&from.sin_addr, h->h_addr_list[b], sizeof(&from.sin_addr)); + memcpy(&from.sin_addr, h->h_addr_list[b], sizeof(from.sin_addr)); SockadrToNetadr((struct sockaddr_qstorage*)&from, addresses); *adrflags++ = 0; diff --git a/engine/common/sys_win_threads.c b/engine/common/sys_win_threads.c index ae2f5c4f7..f24b57a30 100644 --- a/engine/common/sys_win_threads.c +++ b/engine/common/sys_win_threads.c @@ -58,7 +58,7 @@ unsigned int WINAPI threadwrapper(void *args) return 0; } -#ifdef _DEBUG +#if defined(_DEBUG) && defined(_MSC_VER) const DWORD MS_VC_EXCEPTION=0x406D1388; #pragma pack(push,8) typedef struct tagTHREADNAME_INFO @@ -71,23 +71,19 @@ typedef struct tagTHREADNAME_INFO #pragma pack(pop) void Sys_SetThreadName(unsigned int dwThreadID, char *threadName) { - THREADNAME_INFO info; - info.dwType = 0x1000; - info.szName = threadName; - info.dwThreadID = dwThreadID; - info.dwFlags = 0; + THREADNAME_INFO info; + info.dwType = 0x1000; + info.szName = threadName; + info.dwThreadID = dwThreadID; + info.dwFlags = 0; - __try - { - RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); - } - __except(EXCEPTION_EXECUTE_HANDLER) - { - } - -#ifdef CATCHCRASH - AddVectoredExceptionHandler(true, nonmsvc_CrashExceptionHandler); -#endif + __try + { + RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + } } #endif @@ -114,9 +110,12 @@ void *Sys_CreateThread(char *name, int (*func)(void *), void *args, int priority return NULL; } -#ifdef _DEBUG +#if defined(_DEBUG) && defined(_MSC_VER) Sys_SetThreadName(tid, name); #endif +#ifdef CATCHCRASH + AddVectoredExceptionHandler(true, nonmsvc_CrashExceptionHandler); +#endif return (void *)handle; } diff --git a/engine/gl/gl_model.c b/engine/gl/gl_model.c index 794e919fa..cf1c94605 100644 --- a/engine/gl/gl_model.c +++ b/engine/gl/gl_model.c @@ -4411,7 +4411,7 @@ TRACE(("LoadBrushModel %i\n", __LINE__)); mod->radius = RadiusFromBounds (mod->mins, mod->maxs); - mod->numleafs = bm->visleafs; +// mod->numleafs = bm->visleafs; memset(&mod->batches, 0, sizeof(mod->batches)); mod->vbos = NULL; diff --git a/engine/server/sv_send.c b/engine/server/sv_send.c index cbc56bb59..23ed47a10 100644 --- a/engine/server/sv_send.c +++ b/engine/server/sv_send.c @@ -818,15 +818,15 @@ void SV_MulticastProtExt(vec3_t origin, multicast_t to, int dimension_mask, int { vec3_t delta; VectorSubtract(origin, client->edict->v->origin, delta); - if (Length(delta) <= 1024) + if (DotProduct(delta, delta) <= 1024*1024) goto inrange; } - // -1 is because pvs rows are 1 based, not 0 based like leafs - if (mask != sv.pvs) + if (mask != sv.pvs) //leaf 0 is the solid see-all region, so no point figuring out where the players are { vec3_t pos; VectorAdd(client->edict->v->origin, client->edict->v->view_ofs, pos); + // -1 is because pvs rows are 1 based, not 0 based like leafs leafnum = sv.world.worldmodel->funcs.LeafnumForPoint (sv.world.worldmodel, pos)-1; if ( !(mask[leafnum>>3] & (1<<(leafnum&7)) ) ) {