diff --git a/dlls/hamsandwich/pdata.cpp b/dlls/hamsandwich/pdata.cpp index 89c56537..174cde4b 100644 --- a/dlls/hamsandwich/pdata.cpp +++ b/dlls/hamsandwich/pdata.cpp @@ -31,6 +31,15 @@ #include "NEW_Util.h" #include "ham_utils.h" +inline edict_t* INDEXENT2( int iEdictNum ) +{ + if (iEdictNum >= 1 && iEdictNum <= gpGlobals->maxClients) + return MF_GetPlayerEdict(iEdictNum); + else + return (*g_engfuncs.pfnPEntityOfEntIndex)(iEdictNum); +} + +#ifdef DONT_TOUCH_THIS_AGAIN_BAIL #define FM_CHECK_ENTITY(x) \ if (x < 0 || x > gpGlobals->maxEntities) { \ MF_LogError(amx, AMX_ERR_NATIVE, "Entity out of range (%d)", x); \ @@ -48,6 +57,16 @@ } \ } \ } +#endif + +#define FM_CHECK_ENTITY(x) \ + if (x < 0 || x > gpGlobals->maxEntities) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Entity out of range (%d)", x); \ + return 0; \ + } else if (x != 0 && FNullEnt(INDEXENT2(x))) { \ + MF_LogError(amx, AMX_ERR_NATIVE, "Invalid entity %d", x); \ + return 0; \ + } // Return -1 on null, -2 on invalid, and the the index of any other. static cell AMX_NATIVE_CALL get_pdata_cbase_safe(AMX *amx, cell *params)