From cfa502df6e92fa5de971636d22a5eb96f9f479f2 Mon Sep 17 00:00:00 2001 From: Garux Date: Tue, 19 Jan 2021 22:40:58 +0300 Subject: [PATCH] safe string for globalCelShader --- tools/quake3/q3map2/bsp.cpp | 9 ++++----- tools/quake3/q3map2/map.cpp | 6 ++---- tools/quake3/q3map2/model.cpp | 6 ++---- tools/quake3/q3map2/q3map2.h | 2 +- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/tools/quake3/q3map2/bsp.cpp b/tools/quake3/q3map2/bsp.cpp index e4041446..d0e169d2 100644 --- a/tools/quake3/q3map2/bsp.cpp +++ b/tools/quake3/q3map2/bsp.cpp @@ -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" ); diff --git a/tools/quake3/q3map2/map.cpp b/tools/quake3/q3map2/map.cpp index b36408af..31d5c2f3 100644 --- a/tools/quake3/q3map2/map.cpp +++ b/tools/quake3/q3map2/map.cpp @@ -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 */ diff --git a/tools/quake3/q3map2/model.cpp b/tools/quake3/q3map2/model.cpp index e0492ddb..3bb81b5e 100644 --- a/tools/quake3/q3map2/model.cpp +++ b/tools/quake3/q3map2/model.cpp @@ -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 */ diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 654710e1..530a7417 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -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 );