Skip to content

Commit 80563b7

Browse files
committed
feat: tweak check logic
Signed-off-by: Michael Pollind <[email protected]>
1 parent 0c69433 commit 80563b7

File tree

1 file changed

+27
-41
lines changed

1 file changed

+27
-41
lines changed

source/ref_gl/r_q3bsp.c

Lines changed: 27 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,6 +1247,10 @@ static void Mod_ApplySuperStylesToFace( const rdface_t *in, msurface_t *out )
12471247
out->superLightStyle = R_AddSuperLightStyle( loadmodel, lightmaps, lightmapStyles, vertexStyles, lmRects );
12481248
}
12491249

1250+
static inline bool verifyChunkElements(lump_t* lump, size_t chunkSize) {
1251+
return lump->filelen % chunkSize;
1252+
}
1253+
12501254

12511255
/*
12521256
* Mod_LoadQ3BrushModel
@@ -1291,84 +1295,66 @@ void Mod_LoadQ3BrushModel( model_t *mod, model_t *parent, void *buffer, bspForma
12911295
const bool hasLightmaps = (!r_lighting_vertexlight->integer) && light_lumps->filelen > 0;
12921296
const bool isBspRavenFormat = mod_bspFormat->flags & BSP_RAVEN;
12931297

1294-
if( lightarray_lumps->filelen % sizeof( uint16_t ) ) {
1298+
if((lightarray_lumps->filelen % sizeof( uint16_t )) ||
1299+
(nodes_lumps->filelen % sizeof( dnode_t )) ||
1300+
(fog_lumps->filelen % sizeof( dfog_t )) ||
1301+
(brush_lumps->filelen % sizeof( dbrush_t )) ||
1302+
(brushsides_faces_lumps->filelen % ( isBspRavenFormat ? sizeof( rdbrushside_t ) : sizeof( dbrushside_t ) )) ||
1303+
(hasLightmaps && light_lumps->filelen % lightMapSize) ||
1304+
(shaderrefs_lumps->filelen % sizeof( dshaderref_t )) ||
1305+
(shaderrefs_lumps->filelen % sizeof( dshaderref_t )) ||
1306+
(model_lumps->filelen % sizeof( dmodel_t )) ||
1307+
(planes_lumps->filelen % sizeof( dplane_t )) ||
1308+
(face_lumps->filelen % ( isBspRavenFormat ? sizeof( rdface_t ) : sizeof( dface_t ) ))
1309+
) {
12951310
ri.Com_Error( ERR_DROP, "Mod_LoadBrushsides: funny lump size in %s", loadmodel->name );
12961311
}
1312+
12971313
uint16_t *const q3_lightarrays = (void *)( mod_base + lightarray_lumps->fileofs );
12981314
const size_t numlightArrays = lightarray_lumps->filelen / sizeof( uint16_t);
12991315

1300-
if( nodes_lumps->filelen % sizeof( dnode_t ) ) {
1301-
ri.Com_Error( ERR_DROP, "Mod_LoadBrushsides: funny lump size in %s", loadmodel->name );
1302-
}
13031316
dnode_t *const q3_nodes = (void *)( mod_base + nodes_lumps->fileofs );
13041317
const size_t q3_nodes_len = nodes_lumps->filelen / sizeof( dnode_t);
13051318

1306-
if( fog_lumps->filelen % sizeof( dfog_t ) ) {
1307-
ri.Com_Error( ERR_DROP, "Mod_LoadBrushsides: funny lump size in %s", loadmodel->name );
1308-
}
13091319
dfog_t *const q3_fogs = (void *)( mod_base + fog_lumps->fileofs );
13101320
const size_t numFogs = fog_lumps->filelen / sizeof( dfog_t );
13111321

1312-
if( brush_lumps->filelen % sizeof( dbrush_t ) ) {
1313-
ri.Com_Error( ERR_DROP, "Mod_LoadBrushsides: funny lump size in %s", loadmodel->name );
1314-
}
1315-
const size_t numBrushes = brush_lumps->filelen / sizeof( dbrush_t );
13161322
dbrush_t *const q3_brushs = (void *)( mod_base + brush_lumps->fileofs );
1323+
const size_t numBrushes = brush_lumps->filelen / sizeof( dbrush_t );
13171324

1318-
if( brushsides_faces_lumps->filelen % ( isBspRavenFormat ? sizeof( rdbrushside_t ) : sizeof( dbrushside_t ) ) ) {
1319-
ri.Com_Error( ERR_DROP, "Mod_LoadBrushsides: funny lump size in %s", loadmodel->name );
1320-
}
13211325
const size_t numBrushSides = brushsides_faces_lumps->filelen / ( isBspRavenFormat ? sizeof( rdbrushside_t ) : sizeof( dbrushside_t ) );
13221326
dbrushside_t *const q3_brushSides = (void *)( mod_base + brushsides_faces_lumps->fileofs );
13231327
rdbrushside_t *const q3_ravenbrushSides = (void *)( mod_base + brushsides_faces_lumps->fileofs );
13241328

1325-
if( hasLightmaps && light_lumps->filelen % lightMapSize ) {
1326-
ri.Com_Error( ERR_DROP, "Mod_LoadLighting: funny lump size in %s", loadmodel->name );
1327-
}
1328-
1329-
if( shaderrefs_lumps->filelen % sizeof( dshaderref_t ) ) {
1330-
ri.Com_Error( ERR_DROP, "Mod_LoadSubmodels: funny lump size in %s", loadmodel->name );
1331-
}
1332-
1333-
if( model_lumps->filelen % sizeof( dmodel_t ) ) {
1334-
ri.Com_Error( ERR_DROP, "Mod_LoadSubmodels: funny lump size in %s", loadmodel->name );
1335-
}
1329+
const size_t modelLen = model_lumps->filelen / sizeof( dmodel_t );
1330+
dmodel_t *const q3_model = (void *)( (uint8_t *)buffer + model_lumps->fileofs );
13361331

1337-
// faces
1338-
if( face_lumps->filelen % ( isBspRavenFormat ? sizeof( rdface_t ) : sizeof( dface_t ) ) ) {
1339-
ri.Com_Error( ERR_DROP, "Mod_LoadSubmodels: funny lump size in %s", loadmodel->name );
1340-
}
1341-
dface_t *const q3_faces = (void *)( mod_base + face_lumps->fileofs );
13421332
const size_t numFaces = face_lumps->filelen / ( isBspRavenFormat ? sizeof( rdface_t ) : sizeof( dface_t ) );
1333+
dface_t *const q3_faces = (void *)( mod_base + face_lumps->fileofs );
13431334
rdface_t *const q3_ravenFaces = (void *)( mod_base + face_lumps->fileofs );
13441335

1345-
if( planes_lumps->filelen % sizeof( dplane_t ) ) {
1346-
ri.Com_Error( ERR_DROP, "Mod_LoadSubmodels: funny lump size in %s", loadmodel->name );
1347-
}
1348-
dplane_t *const q3_planes = (void *)( mod_base + planes_lumps->fileofs );
13491336
const size_t numPlanes = planes_lumps->filelen / sizeof( dplane_t );
1337+
dplane_t *const q3_planes = (void *)( mod_base + planes_lumps->fileofs );
13501338

13511339
{
1352-
const size_t count = model_lumps->filelen / sizeof( dmodel_t );
1353-
dmodel_t *const q3_model = (void *)( (uint8_t *)buffer + model_lumps->fileofs );
13541340

1355-
uint8_t *const sub_model_mem = Q_CallocAligned( count, 16, sizeof( mbrushmodel_t ) + sizeof( model_t ) );
1356-
mmodel_t *const models = Q_CallocAligned( count, 16, sizeof( mmodel_t ) );
1341+
uint8_t *const sub_model_mem = Q_CallocAligned( modelLen, 16, sizeof( mbrushmodel_t ) + sizeof( model_t ) );
1342+
mmodel_t *const models = Q_CallocAligned( modelLen, 16, sizeof( mmodel_t ) );
13571343

13581344
Q_LinkToPool( models, loadmodel->mempool );
13591345
Q_LinkToPool( sub_model_mem, loadmodel->mempool );
13601346

13611347
model_t *const inline_models = (model_t *)sub_model_mem;
1362-
mbrushmodel_t *const brush_models = (mbrushmodel_t *)( sub_model_mem + ( sizeof( model_t ) * count ) );
1348+
mbrushmodel_t *const brush_models = (mbrushmodel_t *)( sub_model_mem + ( sizeof( model_t ) * modelLen ) );
13631349

13641350
loadmodel->extradata = brush_models;
13651351

13661352
loadbmodel = brush_models;
13671353
loadbmodel->submodels = models;
1368-
loadbmodel->numsubmodels = count;
1354+
loadbmodel->numsubmodels = modelLen;
13691355
loadbmodel->inlines = inline_models;
13701356

1371-
for( size_t i = 0; i < count; i++ ) {
1357+
for( size_t i = 0; i < modelLen; i++ ) {
13721358
inline_models[i].extradata = &brush_models[i];
13731359

13741360
for( size_t j = 0; j < 3; j++ ) {

0 commit comments

Comments
 (0)