q3map2::misc_model::_remap: more persistent input error check

This commit is contained in:
Garux 2019-11-10 22:45:14 +03:00
parent 34e9b522b7
commit c0b5454fd8

View File

@ -214,7 +214,6 @@ void InsertModel( const char *name, int skin, int frame, m4x4_t transform, remap
int i, j, s, k, numSurfaces; int i, j, s, k, numSurfaces;
m4x4_t identity, nTransform; m4x4_t identity, nTransform;
picoModel_t *model; picoModel_t *model;
picoShader_t *shader;
picoSurface_t *surface; picoSurface_t *surface;
shaderInfo_t *si; shaderInfo_t *si;
mapDrawSurface_t *ds; mapDrawSurface_t *ds;
@ -351,13 +350,9 @@ void InsertModel( const char *name, int skin, int frame, m4x4_t transform, remap
} }
/* get shader name */ /* get shader name */
shader = PicoGetSurfaceShader( surface ); if ( !( picoShaderName = PicoGetShaderName( PicoGetSurfaceShader( surface ) ) ) ) {
if ( shader == NULL ) {
picoShaderName = ""; picoShaderName = "";
} }
else{
picoShaderName = PicoGetShaderName( shader );
}
/* handle .skin file */ /* handle .skin file */
if ( sf ) { if ( sf ) {
@ -1513,7 +1508,22 @@ void AddTriangleModels( entity_t *e ){
/* split the string */ /* split the string */
split = strchr( remap->from, ';' ); split = strchr( remap->from, ';' );
if ( split == NULL ) { if ( split == NULL ) {
Sys_Warning( "Shader _remap key found in misc_model without a ; character\n" ); Sys_Warning( "Shader _remap key found in misc_model without a ; character: '%s'\n", remap->from );
}
else if( split == remap->from ){
Sys_Warning( "_remap FROM is empty in '%s'\n", remap->from );
split = NULL;
}
else if( *( split + 1 ) == '\0' ){
Sys_Warning( "_remap TO is empty in '%s'\n", remap->from );
split = NULL;
}
else if( strlen( split + 1 ) >= sizeof( remap->to ) ){
Sys_Warning( "_remap TO is too long in '%s'\n", remap->from );
split = NULL;
}
if ( split == NULL ) {
free( remap ); free( remap );
remap = remap2; remap = remap2;
continue; continue;