safe string for globalCelShader

This commit is contained in:
Garux 2021-01-19 22:40:58 +03:00
parent cbeccc7e3a
commit cfa502df6e
4 changed files with 9 additions and 14 deletions

View File

@ -720,7 +720,6 @@ int BSPMain( int argc, char **argv ){
numMapDrawSurfs = 0;
strClear( tempSource );
strClear( globalCelShader );
/* set standard game flags */
maxSurfaceVerts = game->maxSurfaceVerts;
@ -881,13 +880,13 @@ int BSPMain( int argc, char **argv ){
}
else if ( strEqual( argv[ i ], "-celshader" ) ) {
++i;
if ( argv[i][0] ) {
sprintf( globalCelShader, "textures/%s", argv[ i ] );
if ( !strEmpty( argv[ i ] ) ) {
globalCelShader( "textures/", argv[ i ] );
}
else{
*globalCelShader = 0;
globalCelShader.clear();
}
Sys_Printf( "Global cel shader set to \"%s\"\n", globalCelShader );
Sys_Printf( "Global cel shader set to \"%s\"\n", globalCelShader.c_str() );
}
else if ( strEqual( argv[ i ], "-meta" ) ) {
Sys_Printf( "Creating meta surfaces from brush faces\n" );

View File

@ -1794,13 +1794,11 @@ static bool ParseMapEntity( bool onlyLights, bool noCollapseGroups ){
const char *value;
if( ENT_READKV( &value, mapEnt, "_celshader" ) ||
ENT_READKV( &value, &entities[ 0 ], "_celshader" ) ){
char shader[ MAX_QPATH ];
sprintf( shader, "textures/%s", value );
celShader = ShaderInfoForShader( shader );
celShader = ShaderInfoForShader( String64()( "textures/", value ) );
Sys_Printf( "Entity %d (%s) has cel shader %s\n", mapEnt->mapEntityNum, classname, celShader->shader.c_str() );
}
else{
celShader = !strEmpty( globalCelShader ) ? ShaderInfoForShader( globalCelShader ) : NULL;
celShader = globalCelShader.empty() ? NULL : ShaderInfoForShader( globalCelShader );
}
/* jal : entity based _shadeangle */

View File

@ -1479,12 +1479,10 @@ void AddTriangleModels( entity_t *eparent ){
shaderInfo_t *celShader;
if( ENT_READKV( &value, e, "_celshader" ) ||
ENT_READKV( &value, &entities[ 0 ], "_celshader" ) ){
char shader[ MAX_QPATH ];
sprintf( shader, "textures/%s", value );
celShader = ShaderInfoForShader( shader );
celShader = ShaderInfoForShader( String64()( "textures/", value ) );
}
else{
celShader = !strEmpty( globalCelShader ) ? ShaderInfoForShader( globalCelShader ) : NULL;
celShader = globalCelShader.empty() ? NULL : ShaderInfoForShader( globalCelShader );
}
/* jal : entity based _samplesize */

View File

@ -2209,7 +2209,7 @@ Q_EXTERN bool nosort;
Q_EXTERN bool saveprt;
Q_EXTERN bool hint; /* ydnar */
Q_EXTERN char inbase[ MAX_QPATH ];
Q_EXTERN char globalCelShader[ MAX_QPATH ];
Q_EXTERN String64 globalCelShader;
Q_EXTERN float farPlaneDist Q_ASSIGN( 0.0f ); /* rr2do2, rf, mre, ydnar all contributed to this one... */
Q_EXTERN int farPlaneDistMode Q_ASSIGN( 0 );