bsputils: add bounds checking to Face_GetNum
This commit is contained in:
parent
8a83e3d351
commit
29884e2b4a
|
|
@ -19,12 +19,18 @@
|
|||
|
||||
#include <common/bsputils.hh>
|
||||
#include <assert.h>
|
||||
#include <cstddef>
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
int Face_GetNum(const bsp2_t *bsp, const bsp2_dface_t *f)
|
||||
{
|
||||
return f - bsp->dfaces;
|
||||
Q_assert(f != nullptr);
|
||||
|
||||
const ptrdiff_t diff = f - bsp->dfaces;
|
||||
Q_assert(diff >= 0 && diff < bsp->numfaces);
|
||||
|
||||
return static_cast<int>(diff);
|
||||
}
|
||||
|
||||
/* small helper that just retrieves the correct vertex from face->surfedge->edge lookups */
|
||||
|
|
|
|||
|
|
@ -664,7 +664,7 @@ CalcPoints(const modelinfo_t *modelinfo, const vec3_t offset, lightsurf_t *surf,
|
|||
const auto res = CalcPointNormal(bsp, face, vec3_t_to_glm(point), phongshaded, surf->lightmapscale, 0);
|
||||
|
||||
surf->occluded[i] = !get<0>(res);
|
||||
*realfacenum = Face_GetNum(bsp, std::get<1>(res));
|
||||
*realfacenum = std::get<1>(res) != nullptr ? Face_GetNum(bsp, std::get<1>(res)) : -1;
|
||||
glm_to_vec3_t(std::get<2>(res), point);
|
||||
glm_to_vec3_t(std::get<3>(res), norm);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue