diff --git a/.cproject b/.cproject
index 8d0ef276..a721e1ae 100644
--- a/.cproject
+++ b/.cproject
@@ -128,7 +128,6 @@
-
diff --git a/include/common.hpp b/include/common.hpp
index b6d47ade..dff86113 100644
--- a/include/common.hpp
+++ b/include/common.hpp
@@ -51,7 +51,6 @@
#include "timer.hpp"
#include "averager.hpp"
-#include "segvcatch/segvcatch.h"
#include
@@ -133,11 +132,6 @@ constexpr T _clamp(T _min, T _max, T _val) {
#define SQR(x) (x) * (x)
-#ifndef CATHOOK_BUILD_NUMBER
-#define CATHOOK_BUILD_NUMBER "LATEST"
-#endif
-#define CATHOOK_BUILD_NAME "Cat's Eye"
-
#define CON_NAME "cat"
#define CON_PREFIX CON_NAME "_"
@@ -152,38 +146,8 @@ constexpr T _clamp(T _min, T _max, T _val) {
#define DEG2RAD(x) (float)(x) * (PI / 180.0f)
#endif
-#define DEBUG_SEGV false
#define STR(c) #c
-#if DEBUG_SEGV == true
-
-#define SEGV_BEGIN \
- try {
-
-#define SEGV_END \
- } catch (...) { \
- logging::Info("SEGV/FPE occured! %s in %s:%d", __func__, __FILE__, __LINE__); \
- }
-
-#define SEGV_END_INFO(x) \
- } catch (...) { \
- logging::Info("SEGV/FPE occured! (%s)", x); \
- }
-
-#define SAFE_CALL(x) \
- SEGV_BEGIN \
- x; \
- SEGV_END_INFO(#x)
-
-#else
-
-#define SEGV_BEGIN
-#define SEGV_END
-#define SEGV_END_INFO(x)
-#define SAFE_CALL(x) x
-
-#endif
-
#define GET_RENDER_CONTEXT (IsTF2() ? g_IMaterialSystem->GetRenderContext() : g_IMaterialSystemHL->GetRenderContext())
#endif /* COMMON_H_ */
diff --git a/segvcatch/i386-signal.h b/segvcatch/i386-signal.h
deleted file mode 100644
index d94cac70..00000000
--- a/segvcatch/i386-signal.h
+++ /dev/null
@@ -1,168 +0,0 @@
-// i386-signal.h - Catch runtime signals and turn them into exceptions
-// on an i386 based Linux system.
-
-/* Copyright (C) 1998, 1999, 2001, 2002, 2006, 2007 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-
-#ifndef JAVA_SIGNAL_H
-#define JAVA_SIGNAL_H 1
-
-#include
-#include
-#include
-
-#define HANDLE_SEGV 1
-#define HANDLE_FPE 1
-
-#define SIGNAL_HANDLER(_name) \
-static void _Jv_##_name (int, siginfo_t *, \
- void *_p __attribute__ ((__unused__)))
-
-#define HANDLE_DIVIDE_OVERFLOW \
-do \
-{ \
- struct ucontext *_uc = (struct ucontext *)_p; \
- gregset_t &_gregs = _uc->uc_mcontext.gregs; \
- unsigned char *_eip = (unsigned char *)_gregs[REG_EIP]; \
- \
- /* According to the JVM spec, "if the dividend is the negative \
- * integer of largest possible magnitude for the type and the \
- * divisor is -1, then overflow occurs and the result is equal to \
- * the dividend. Despite the overflow, no exception occurs". \
- \
- * We handle this by inspecting the instruction which generated the \
- * signal and advancing ip to point to the following instruction. \
- * As the instructions are variable length it is necessary to do a \
- * little calculation to figure out where the following instruction \
- * actually is. \
- \
- */ \
- \
- /* Detect a signed division of Integer.MIN_VALUE. */ \
- if (_eip[0] == 0xf7) \
- { \
- bool _min_value_dividend = false; \
- unsigned char _modrm = _eip[1]; \
- \
- if (((_modrm >> 3) & 7) == 7) /* Signed divide */ \
- { \
- _min_value_dividend = \
- _gregs[REG_EAX] == (greg_t)0x80000000UL; \
- } \
- \
- if (_min_value_dividend) \
- { \
- unsigned char _rm = _modrm & 7; \
- _gregs[REG_EDX] = 0; /* the remainder is zero */ \
- switch (_modrm >> 6) \
- { \
- case 0: /* register indirect */ \
- if (_rm == 5) /* 32-bit displacement */ \
- _eip += 4; \
- if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
- _eip += 1; \
- break; \
- case 1: /* register indirect + 8-bit displacement */ \
- _eip += 1; \
- if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
- _eip += 1; \
- break; \
- case 2: /* register indirect + 32-bit displacement */ \
- _eip += 4; \
- if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
- _eip += 1; \
- break; \
- case 3: \
- break; \
- } \
- _eip += 2; \
- _gregs[REG_EIP] = (greg_t)_eip; \
- return; \
- } \
- } \
-} \
-while (0)
-
-/* We use kernel_sigaction here because we're calling the kernel
- directly rather than via glibc. The sigaction structure that the
- syscall uses is a different shape from the one in userland and not
- visible to us in a header file so we define it here. */
-
-extern "C"
-{
- struct kernel_sigaction
- {
- void (*k_sa_sigaction)(int,siginfo_t *,void *);
- unsigned long k_sa_flags;
- void (*k_sa_restorer) (void);
- sigset_t k_sa_mask;
- };
-}
-
-#define MAKE_THROW_FRAME(_exception)
-
-#define RESTORE(name, syscall) RESTORE2 (name, syscall)
-#define RESTORE2(name, syscall) \
-asm \
- ( \
- ".text\n" \
- ".byte 0 # Yes, this really is necessary\n" \
- " .align 16\n" \
- "__" #name ":\n" \
- " movl $" #syscall ", %eax\n" \
- " int $0x80" \
- );
-
-/* The return code for realtime-signals. */
-RESTORE (restore_rt, __NR_rt_sigreturn)
-void restore_rt (void) asm ("__restore_rt")
- __attribute__ ((visibility ("hidden")));
-
-#define INIT_SEGV \
-do \
- { \
- struct kernel_sigaction act; \
- act.k_sa_sigaction = _Jv_catch_segv; \
- sigemptyset (&act.k_sa_mask); \
- act.k_sa_flags = SA_SIGINFO|0x4000000; \
- act.k_sa_restorer = restore_rt; \
- syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, _NSIG / 8); \
- } \
-while (0)
-
-#define INIT_FPE \
-do \
- { \
- struct kernel_sigaction act; \
- act.k_sa_sigaction = _Jv_catch_fpe; \
- sigemptyset (&act.k_sa_mask); \
- act.k_sa_flags = SA_SIGINFO|0x4000000; \
- act.k_sa_restorer = restore_rt; \
- syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, _NSIG / 8); \
- } \
-while (0)
-
-/* You might wonder why we use syscall(SYS_sigaction) in INIT_FPE
- * instead of the standard sigaction(). This is necessary because of
- * the shenanigans above where we increment the PC saved in the
- * context and then return. This trick will only work when we are
- * called _directly_ by the kernel, because linuxthreads wraps signal
- * handlers and its wrappers do not copy the sigcontext struct back
- * when returning from a signal handler. If we return from our divide
- * handler to a linuxthreads wrapper, we will lose the PC adjustment
- * we made and return to the faulting instruction again. Using
- * syscall(SYS_sigaction) causes our handler to be called directly
- * by the kernel, bypassing any wrappers.
-
- * Also, there may not be any unwind info in the linuxthreads
- * library's signal handlers and so we can't unwind through them
- * anyway. */
-
-#endif /* JAVA_SIGNAL_H */
-
diff --git a/segvcatch/segvcatch.cpp b/segvcatch/segvcatch.cpp
deleted file mode 100644
index e8d0fe28..00000000
--- a/segvcatch/segvcatch.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009 by VisualData *
- * *
- * Redistributed under LGPL license terms. *
- ***************************************************************************/
-
-#include "segvcatch.h"
-
-//#include
-
-using namespace std;
-
-namespace segvcatch
-{
-
-segvcatch::handler handler_segv = 0;
-segvcatch::handler handler_fpe = 0;
-
-#if defined __GNUC__ && __linux
-
-#ifdef __i386__
-#include "i386-signal.h"
-#endif /*__i386__*/
-
-#ifdef __x86_64__
-#include "x86_64-signal.h"
-#endif /*__x86_64__*/
-
-#endif /*defined __GNUC__ && __linux*/
-
-void default_segv()
-{
- throw "Segmentation fault";
-}
-
-void default_fpe()
-{
- throw "Floating-point exception";
-}
-
-void handle_segv()
-{
- if (handler_segv)
- handler_segv();
-}
-
-void handle_fpe()
-{
- if (handler_fpe)
- handler_fpe();
-}
-
-#if defined (HANDLE_SEGV) || defined(HANDLE_FPE)
-
-#include
-
-/* Unblock a signal. Unless we do this, the signal may only be sent
- once. */
-static void unblock_signal(int signum __attribute__((__unused__)))
-{
-#ifdef _POSIX_VERSION
- sigset_t sigs;
- sigemptyset(&sigs);
- sigaddset(&sigs, signum);
- sigprocmask(SIG_UNBLOCK, &sigs, NULL);
-#endif
-}
-#endif
-
-#ifdef HANDLE_SEGV
-
-SIGNAL_HANDLER(catch_segv)
-{
- unblock_signal(SIGSEGV);
- MAKE_THROW_FRAME(nullp);
- handle_segv();
-}
-#endif
-
-#ifdef HANDLE_FPE
-
-SIGNAL_HANDLER(catch_fpe)
-{
- unblock_signal(SIGFPE);
-#ifdef HANDLE_DIVIDE_OVERFLOW
- HANDLE_DIVIDE_OVERFLOW;
-#else
- MAKE_THROW_FRAME(arithexception);
-#endif
- handle_fpe();
-}
-#endif
-
-#ifdef WIN32
-#include
-
-static LONG CALLBACK win32_exception_handler(LPEXCEPTION_POINTERS e)
-{
- if (e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
- {
- handle_segv();
- return EXCEPTION_CONTINUE_EXECUTION;
- }
- else if (e->ExceptionRecord->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
- {
- handle_fpe();
- return EXCEPTION_CONTINUE_EXECUTION;
- }
- else
- return EXCEPTION_CONTINUE_SEARCH;
-}
-#endif
-}
-
-
-namespace segvcatch
-{
-
-void init_segv(handler h)
-{
- if (h)
- handler_segv = h;
- else
- handler_segv = default_segv;
-#ifdef HANDLE_SEGV
- INIT_SEGV;
-#endif
-
-#ifdef WIN32
- SetUnhandledExceptionFilter(win32_exception_handler);
-#endif
-}
-
-void init_fpe(handler h)
-{
- if (h)
- handler_fpe = h;
- else
- handler_fpe = default_fpe;
-#ifdef HANDLE_FPE
- INIT_FPE;
-#endif
-
-#ifdef WIN32
- SetUnhandledExceptionFilter(win32_exception_handler);
-#endif
-
-}
-
-}
diff --git a/segvcatch/segvcatch.h b/segvcatch/segvcatch.h
deleted file mode 100644
index 80c31c7e..00000000
--- a/segvcatch/segvcatch.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009 by VisualData *
- * *
- * Redistributed under LGPL license terms. *
- ***************************************************************************/
-
-#ifndef _SEGVCATCH_H
-#define _SEGVCATCH_H
-
-/*! \brief segvcatch namespace
-
-
-*/
-namespace segvcatch
-{
-
-
-/*! Signal handler, used to redefine standart exception throwing. */
-typedef void (*handler)();
-
-
-extern segvcatch::handler handler_segv;
-extern segvcatch::handler handler_fpe;
-
-/*! Initialize segmentation violation handler.
- \param h (optional) - optional user's signal handler. By default used an internal signal handler to throw
- std::runtime_error.
- */
-void init_segv(handler h = 0);
-
-/*! Initialize floating point error handler.
- \param h - optional user's signal handler. By default used an internal signal handler to throw
- std::runtime_error.*/
-void init_fpe(handler h = 0);
-
-}
-
-#endif /* _SEGVCATCH_H */
diff --git a/segvcatch/x86_64-signal.h b/segvcatch/x86_64-signal.h
deleted file mode 100644
index 1b647c0c..00000000
--- a/segvcatch/x86_64-signal.h
+++ /dev/null
@@ -1,181 +0,0 @@
-// x86_64-signal.h - Catch runtime signals and turn them into exceptions
-// on an x86_64 based GNU/Linux system.
-
-/* Copyright (C) 2003, 2006, 2007 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-
-#ifdef __x86_64__
-
-#ifndef JAVA_SIGNAL_H
-#define JAVA_SIGNAL_H 1
-
-#include
-#include
-
-#define HANDLE_SEGV 1
-#define HANDLE_FPE 1
-
-#define SIGNAL_HANDLER(_name) \
-static void _Jv_##_name (int, siginfo_t *, \
- void *_p __attribute__ ((__unused__)))
-
-#define HANDLE_DIVIDE_OVERFLOW \
-do \
-{ \
- struct ucontext *_uc = (struct ucontext *)_p; \
- gregset_t &_gregs = _uc->uc_mcontext.gregs; \
- unsigned char *_rip = (unsigned char *)_gregs[REG_RIP]; \
- \
- /* According to the JVM spec, "if the dividend is the negative \
- * integer of largest possible magnitude for the type and the \
- * divisor is -1, then overflow occurs and the result is equal to \
- * the dividend. Despite the overflow, no exception occurs". \
- \
- * We handle this by inspecting the instruction which generated the \
- * signal and advancing ip to point to the following instruction. \
- * As the instructions are variable length it is necessary to do a \
- * little calculation to figure out where the following instruction \
- * actually is. \
- \
- */ \
- \
- bool _is_64_bit = false; \
- \
- if ((_rip[0] & 0xf0) == 0x40) /* REX byte present. */ \
- { \
- unsigned char _rex = _rip[0] & 0x0f; \
- _is_64_bit = (_rex & 0x08) != 0; \
- _rip++; \
- } \
- \
- /* Detect a signed division of Integer.MIN_VALUE or Long.MIN_VALUE. */ \
- if (_rip[0] == 0xf7) \
- { \
- bool _min_value_dividend = false; \
- unsigned char _modrm = _rip[1]; \
- \
- if (((_modrm >> 3) & 7) == 7) \
- { \
- if (_is_64_bit) \
- _min_value_dividend = \
- _gregs[REG_RAX] == (greg_t)0x8000000000000000UL; \
- else \
- _min_value_dividend = \
- (_gregs[REG_RAX] & 0xffffffff) == (greg_t)0x80000000UL; \
- } \
- \
- if (_min_value_dividend) \
- { \
- unsigned char _rm = _modrm & 7; \
- _gregs[REG_RDX] = 0; /* the remainder is zero */ \
- switch (_modrm >> 6) \
- { \
- case 0: /* register indirect */ \
- if (_rm == 5) /* 32-bit displacement */ \
- _rip += 4; \
- if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
- _rip += 1; \
- break; \
- case 1: /* register indirect + 8-bit displacement */ \
- _rip += 1; \
- if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
- _rip += 1; \
- break; \
- case 2: /* register indirect + 32-bit displacement */ \
- _rip += 4; \
- if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
- _rip += 1; \
- break; \
- case 3: \
- break; \
- } \
- _rip += 2; \
- _gregs[REG_RIP] = (greg_t)_rip; \
- return; \
- } \
- } \
-} \
-while (0)
-
-extern "C"
-{
- struct kernel_sigaction
- {
- void (*k_sa_sigaction)(int,siginfo_t *,void *);
- unsigned long k_sa_flags;
- void (*k_sa_restorer) (void);
- sigset_t k_sa_mask;
- };
-}
-
-#define MAKE_THROW_FRAME(_exception)
-
-#define RESTORE(name, syscall) RESTORE2 (name, syscall)
-#define RESTORE2(name, syscall) \
-asm \
- ( \
- ".text\n" \
- ".byte 0 # Yes, this really is necessary\n" \
- ".align 16\n" \
- "__" #name ":\n" \
- " movq $" #syscall ", %rax\n" \
- " syscall\n" \
- );
-
-/* The return code for realtime-signals. */
-RESTORE (restore_rt, __NR_rt_sigreturn)
-void restore_rt (void) asm ("__restore_rt")
- __attribute__ ((visibility ("hidden")));
-
-#define INIT_SEGV \
-do \
- { \
- struct kernel_sigaction act; \
- act.k_sa_sigaction = _Jv_catch_segv; \
- sigemptyset (&act.k_sa_mask); \
- act.k_sa_flags = SA_SIGINFO|0x4000000; \
- act.k_sa_restorer = restore_rt; \
- syscall (SYS_rt_sigaction, SIGSEGV, &act, 0, _NSIG / 8); \
- } \
-while (0)
-
-#define INIT_FPE \
-do \
- { \
- struct kernel_sigaction act; \
- act.k_sa_sigaction = _Jv_catch_fpe; \
- sigemptyset (&act.k_sa_mask); \
- act.k_sa_flags = SA_SIGINFO|0x4000000; \
- act.k_sa_restorer = restore_rt; \
- syscall (SYS_rt_sigaction, SIGFPE, &act, 0, _NSIG / 8); \
- } \
-while (0)
-
-/* You might wonder why we use syscall(SYS_sigaction) in INIT_FPE
- * instead of the standard sigaction(). This is necessary because of
- * the shenanigans above where we increment the PC saved in the
- * context and then return. This trick will only work when we are
- * called _directly_ by the kernel, because linuxthreads wraps signal
- * handlers and its wrappers do not copy the sigcontext struct back
- * when returning from a signal handler. If we return from our divide
- * handler to a linuxthreads wrapper, we will lose the PC adjustment
- * we made and return to the faulting instruction again. Using
- * syscall(SYS_sigaction) causes our handler to be called directly
- * by the kernel, bypassing any wrappers. */
-
-#endif /* JAVA_SIGNAL_H */
-
-#else /* __x86_64__ */
-
-/* This is for the 32-bit subsystem on x86-64. */
-
-#define sigcontext_struct sigcontext
-#include
-
-#endif /* __x86_64__ */
diff --git a/src/entitycache.cpp b/src/entitycache.cpp
index 14aab577..3a494ba3 100644
--- a/src/entitycache.cpp
+++ b/src/entitycache.cpp
@@ -50,8 +50,6 @@ static CatVar ve_smooth(CV_SWITCH, "debug_ve_smooth", "1", "VE Smoothing");
static CatVar ve_averager_size(CV_INT, "debug_ve_averaging", "8", "VE Averaging");
void CachedEntity::Update() {
- SEGV_BEGIN
-
auto raw = RAW_ENT(this);
if (!raw) return;
@@ -182,7 +180,6 @@ void CachedEntity::Update() {
m_iHealth = NET_INT(raw, netvar.iBuildingHealth);
m_iMaxHealth = NET_INT(raw, netvar.iBuildingMaxHealth);
}
- SEGV_END_INFO("Updating entity");
}
static CatVar fast_vischeck(CV_SWITCH, "fast_vischeck", "0", "Fast VisCheck", "VisCheck only certain player hitboxes");
@@ -194,8 +191,7 @@ bool CachedEntity::IsVisible() {
PROF_SECTION(CE_IsVisible);
if (m_bVisCheckComplete) return m_bAnyHitboxVisible;
- vischeck0 = false;
- SAFE_CALL(vischeck0 = IsEntityVectorVisible(this, m_vecOrigin));
+ vischeck0 = IsEntityVectorVisible(this, m_vecOrigin);
if (vischeck0) {
m_bAnyHitboxVisible = true;
@@ -218,7 +214,7 @@ bool CachedEntity::IsVisible() {
for (int i = 0; i < hitboxes.m_nNumHitboxes; i++) {
vischeck = false;
- SAFE_CALL(vischeck = hitboxes.VisibilityCheck(i));
+ vischeck = hitboxes.VisibilityCheck(i);
if (vischeck) {
m_bAnyHitboxVisible = true;
m_bVisCheckComplete = true;
diff --git a/src/entityhitboxcache.cpp b/src/entityhitboxcache.cpp
index 93bf8b0f..608af3cc 100644
--- a/src/entityhitboxcache.cpp
+++ b/src/entityhitboxcache.cpp
@@ -33,7 +33,7 @@ void EntityHitboxCache::InvalidateCache() {
}
void EntityHitboxCache::Update() {
- SAFE_CALL(InvalidateCache());
+ InvalidateCache();
if (CE_BAD(parent_ref)) return;
}
@@ -43,9 +43,8 @@ void EntityHitboxCache::Init() {
mstudiohitboxset_t *set;
m_bInit = true;
- model = 0;
- if (CE_BAD(parent_ref)) return;
- SAFE_CALL(model = (model_t*)RAW_ENT(parent_ref)->GetModel());
+ if (CE_BAD(parent_ref)) return;
+ model = (model_t*)RAW_ENT(parent_ref)->GetModel();
if (!model) return;
if (!m_bModelSet || model != m_pLastModel) {
shdr = g_IModelInfo->GetStudiomodel(model);
@@ -56,7 +55,7 @@ void EntityHitboxCache::Init() {
m_pHitboxSet = set;
m_nNumHitboxes = 0;
if (set) {
- SAFE_CALL(m_nNumHitboxes = set->numhitboxes);
+ m_nNumHitboxes = set->numhitboxes;
}
if (m_nNumHitboxes > CACHE_MAX_HITBOXES) m_nNumHitboxes = CACHE_MAX_HITBOXES;
m_bModelSet = true;
@@ -74,7 +73,7 @@ bool EntityHitboxCache::VisibilityCheck(int id) {
// TODO corners
hitbox = GetHitbox(id);
if (!hitbox) return 0;
- SAFE_CALL(m_VisCheck[id] = (IsEntityVectorVisible(parent_ref, hitbox->center)));
+ m_VisCheck[id] = (IsEntityVectorVisible(parent_ref, hitbox->center));
m_VisCheckValidationFlags[id] = true;
return m_VisCheck[id];
}
diff --git a/src/hooks/CreateMove.cpp b/src/hooks/CreateMove.cpp
index 8ca0f2be..065d0528 100644
--- a/src/hooks/CreateMove.cpp
+++ b/src/hooks/CreateMove.cpp
@@ -107,7 +107,6 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
Vector vsilent, ang;
INetChannel* ch;
- SEGV_BEGIN;
tickcount++;
g_pUserCmd = cmd;
@@ -195,16 +194,16 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
// PROF_BEGIN();
{
PROF_SECTION(EntityCache);
- SAFE_CALL(entity_cache::Update());
+ entity_cache::Update();
}
// PROF_END("Entity Cache updating");
{
PROF_SECTION(CM_PlayerResource);
- SAFE_CALL(g_pPlayerResource->Update());
+ g_pPlayerResource->Update();
}
{
PROF_SECTION(CM_LocalPlayer);
- SAFE_CALL(g_pLocalPlayer->Update());
+ g_pLocalPlayer->Update();
}
g_Settings.bInvalid = false;
@@ -264,19 +263,19 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
#endif
if (CE_GOOD(g_pLocalPlayer->entity)) {
IF_GAME (IsTF2()) {
- SAFE_CALL(UpdateHoovyList());
+ UpdateHoovyList();
}
g_pLocalPlayer->v_OrigViewangles = cmd->viewangles;
#if ENABLE_VISUALS == 1
{
PROF_SECTION(CM_esp);
- SAFE_CALL(hacks::shared::esp::CreateMove());
+ hacks::shared::esp::CreateMove();
}
#endif
if (!g_pLocalPlayer->life_state && CE_GOOD(g_pLocalPlayer->weapon())) {
{
PROF_SECTION(CM_walkbot);
- SAFE_CALL(hacks::shared::walkbot::Move());
+ hacks::shared::walkbot::Move();
}
// Walkbot can leave game.
if (!g_IEngine->IsInGame()) {
@@ -285,24 +284,24 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
}
IF_GAME (IsTF()) {
PROF_SECTION(CM_uberspam);
- SAFE_CALL(hacks::tf::uberspam::CreateMove());
+ hacks::tf::uberspam::CreateMove();
}
IF_GAME (IsTF2()) {
PROF_SECTION(CM_antibackstab);
- SAFE_CALL(hacks::tf2::antibackstab::CreateMove());
+ hacks::tf2::antibackstab::CreateMove();
}
IF_GAME (IsTF2()) {
PROF_SECTION(CM_noisemaker);
- SAFE_CALL(hacks::tf2::noisemaker::CreateMove());
+ hacks::tf2::noisemaker::CreateMove();
}
{
PROF_SECTION(CM_bunnyhop);
- SAFE_CALL(hacks::shared::bunnyhop::CreateMove());
+ hacks::shared::bunnyhop::CreateMove();
}
if (engine_pred) engine_prediction::RunEnginePrediction(RAW_ENT(LOCAL_E), g_pUserCmd);
{
PROF_SECTION(CM_aimbot);
- SAFE_CALL(hacks::shared::aimbot::CreateMove());
+ hacks::shared::aimbot::CreateMove();
}
static int attackticks = 0;
if (g_pUserCmd->buttons & IN_ATTACK)
@@ -321,27 +320,27 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
}
{
PROF_SECTION(CM_antiaim);
- SAFE_CALL(hacks::shared::antiaim::ProcessUserCmd(cmd));
+ hacks::shared::antiaim::ProcessUserCmd(cmd);
}
IF_GAME (IsTF()) {
PROF_SECTION(CM_autosticky);
- SAFE_CALL(hacks::tf::autosticky::CreateMove());
+ hacks::tf::autosticky::CreateMove();
}
IF_GAME (IsTF()) {
PROF_SECTION(CM_autoreflect);
- SAFE_CALL(hacks::tf::autoreflect::CreateMove());
+ hacks::tf::autoreflect::CreateMove();
}
{
PROF_SECTION(CM_triggerbot);
- SAFE_CALL(hacks::shared::triggerbot::CreateMove());
+ hacks::shared::triggerbot::CreateMove();
}
IF_GAME (IsTF()) {
PROF_SECTION(CM_autoheal);
- SAFE_CALL(hacks::tf::autoheal::CreateMove());
+ hacks::tf::autoheal::CreateMove();
}
IF_GAME (IsTF2()) {
PROF_SECTION(CM_autobackstab);
- SAFE_CALL(hacks::tf2::autobackstab::CreateMove());
+ hacks::tf2::autobackstab::CreateMove();
}
if (debug_projectiles)
projectile_logging::Update();
@@ -349,7 +348,7 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
}
{
PROF_SECTION(CM_misc);
- SAFE_CALL(hacks::shared::misc::CreateMove());
+ hacks::shared::misc::CreateMove();
}
{
PROF_SECTION(CM_crits);
@@ -357,7 +356,7 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
}
{
PROF_SECTION(CM_spam);
- SAFE_CALL(hacks::shared::spam::CreateMove());
+ hacks::shared::spam::CreateMove();
}
}
if (time_replaced) g_GlobalVars->curtime = curtime_old;
@@ -434,7 +433,7 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
#if ENABLE_IPC == 1
if (CE_GOOD(g_pLocalPlayer->entity) && !g_pLocalPlayer->life_state) {
PROF_SECTION(CM_followbot);
- SAFE_CALL(hacks::shared::followbot::AfterCreateMove());
+ hacks::shared::followbot::AfterCreateMove();
}
#endif
if (cmd)
@@ -448,7 +447,4 @@ bool CreateMove_hook(void* thisptr, float inputSample, CUserCmd* cmd) {
g_pLocalPlayer->bAttackLastTick = (cmd->buttons & IN_ATTACK);
g_Settings.is_create_move = false;
return ret;
-
- SEGV_END;
- return true;
}
diff --git a/src/hooks/PaintTraverse.cpp b/src/hooks/PaintTraverse.cpp
index 1bd40860..f545e512 100644
--- a/src/hooks/PaintTraverse.cpp
+++ b/src/hooks/PaintTraverse.cpp
@@ -82,7 +82,7 @@ void PaintTraverse_hook(void* _this, unsigned int vp, bool fr, bool ar) {
}
}
- if (call_default) SAFE_CALL(original(_this, vp, fr, ar));
+ if (call_default) original(_this, vp, fr, ar);
// To avoid threading problems.
PROF_SECTION(PT_total);
@@ -128,6 +128,5 @@ void PaintTraverse_hook(void* _this, unsigned int vp, bool fr, bool ar) {
PROF_SECTION(PT_active);
draw::UpdateWTS();
- SEGV_END;
}
diff --git a/src/hooks/others.cpp b/src/hooks/others.cpp
index cfb0751b..54c0486c 100644
--- a/src/hooks/others.cpp
+++ b/src/hooks/others.cpp
@@ -109,7 +109,6 @@ CatCommand spectate("spectate", "Spectate", [](const CCommand& args) {
void OverrideView_hook(void* _this, CViewSetup* setup) {
static const OverrideView_t original = (OverrideView_t)hooks::clientmode.GetMethod(offsets::OverrideView());
static bool zoomed;
- SEGV_BEGIN;
original(_this, setup);
if (!cathook) return;
if (g_pLocalPlayer->bZoomed && override_fov_zoomed) {
@@ -162,17 +161,13 @@ void OverrideView_hook(void* _this, CViewSetup* setup) {
}
draw::fov = setup->fov;
- SEGV_END;
}
#endif
bool CanPacket_hook(void* _this) {
const CanPacket_t original = (CanPacket_t)hooks::netchannel.GetMethod(offsets::CanPacket());
- SEGV_BEGIN;
return *bSendPackets && original(_this);
- SEGV_END;
- return false;
}
CUserCmd* GetUserCmd_hook(IInput* _this, int sequence_number) {
@@ -225,7 +220,6 @@ bool SendNetMsg_hook(void* _this, INetMessage& msg, bool bForceReliable = false,
// This is a INetChannel hook - it SHOULDN'T be static because netchannel changes.
const SendNetMsg_t original = (SendNetMsg_t)hooks::netchannel.GetMethod(offsets::SendNetMsg());
- SEGV_BEGIN;
// net_StringCmd
if (msg.GetType() == 4 && (newlines_msg || crypt_chat)) {
std::string str(msg.ToString());
@@ -283,8 +277,6 @@ bool SendNetMsg_hook(void* _this, INetMessage& msg, bool bForceReliable = false,
logging::Info("%i bytes => %s", buffer.GetNumBytesWritten(), bytes.c_str());
}
return original(_this, msg, bForceReliable, bVoice);
- SEGV_END;
- return false;
}
static CatVar die_if_vac(CV_SWITCH, "die_if_vac", "0", "Die if VAC banned");
@@ -305,13 +297,11 @@ void Shutdown_hook(void* _this, const char* reason) {
#if ENABLE_IPC
ipc::UpdateServerAddress(true);
#endif
- SEGV_BEGIN;
if (cathook && (disconnect_reason.convar_parent->m_StringLength > 3) && strstr(reason, "user")) {
original(_this, disconnect_reason_newlined);
} else {
original(_this, reason);
}
- SEGV_END;
}
static CatVar resolver(CV_SWITCH, "resolver", "0", "Resolve angles");
@@ -449,7 +439,6 @@ void FrameStageNotify_hook(void* _this, int stage) {
hacks::tf2::killstreak::apply_killstreaks();
static const FrameStageNotify_t original = (FrameStageNotify_t)hooks::client.GetMethod(offsets::FrameStageNotify());
- SEGV_BEGIN;
if (!g_IEngine->IsInGame()) g_Settings.bInvalid = true;
#if ENABLE_VISUALS == 1
{
@@ -542,8 +531,7 @@ void FrameStageNotify_hook(void* _this, int stage) {
}
}
#endif /* TEXTMODE */
- SAFE_CALL(original(_this, stage));
- SEGV_END;
+ original(_this, stage);
}
static CatVar clean_chat(CV_SWITCH, "clean_chat", "0", "Clean chat", "Removes newlines from chat");
@@ -554,7 +542,6 @@ bool DispatchUserMessage_hook(void* _this, int type, bf_read& buf) {
char *data, c;
static const DispatchUserMessage_t original = (DispatchUserMessage_t)hooks::client.GetMethod(offsets::DispatchUserMessage());
- SEGV_BEGIN;
if (type == 4) {
loop_index = 0;
s = buf.GetNumBytesLeft();
@@ -590,8 +577,6 @@ bool DispatchUserMessage_hook(void* _this, int type, bf_read& buf) {
logging::Info("D> %i", type);
}
return original(_this, type, buf);
- SEGV_END;
- return false;
}
void LevelInit_hook(void* _this, const char* newmap) {
diff --git a/src/visual/drawmgr.cpp b/src/visual/drawmgr.cpp
index f4f19c52..db80d829 100644
--- a/src/visual/drawmgr.cpp
+++ b/src/visual/drawmgr.cpp
@@ -40,7 +40,7 @@ void DrawCheatVisuals() {
#endif
{
PROF_SECTION(DRAW_misc);
- SAFE_CALL(hacks::shared::misc::DrawText());
+ hacks::shared::misc::DrawText();
}
if (info_text) {
PROF_SECTION(DRAW_info);
@@ -82,12 +82,12 @@ void DrawCheatVisuals() {
}
IF_GAME(IsTF2()) {
PROF_SECTION(DRAW_skinchanger);
- SAFE_CALL(hacks::tf2::skinchanger::DrawText());
+ hacks::tf2::skinchanger::DrawText();
}
#ifndef FEATURE_RADAR_DISABLED
IF_GAME(IsTF()) {
PROF_SECTION(DRAW_radar);
- SAFE_CALL(hacks::tf::radar::Draw());
+ hacks::tf::radar::Draw();
}
#endif
IF_GAME(IsTF2()) {
@@ -100,14 +100,14 @@ void DrawCheatVisuals() {
}
IF_GAME(IsTF()) {
PROF_SECTION(PT_antidisguise);
- SAFE_CALL(hacks::tf2::antidisguise::Draw());
+ hacks::tf2::antidisguise::Draw();
}
IF_GAME(IsTF()) {
PROF_SECTION(PT_spyalert);
- SAFE_CALL(hacks::tf::spyalert::Draw());
+ hacks::tf::spyalert::Draw();
}
#if ENABLE_IPC == 1
- IF_GAME(IsTF()) SAFE_CALL(hacks::shared::followbot::Draw());
+ IF_GAME(IsTF()) hacks::shared::followbot::Draw();
#endif
{
PROF_SECTION(DRAW_esp);