public: crtlib: fix Q_pretifymem so it compiles with -Wformat-nonliteral

This commit is contained in:
Alibek Omarov
2025-03-15 13:54:59 +03:00
parent 3d999269eb
commit 7aa9f23590
3 changed files with 11 additions and 22 deletions

View File

@@ -220,7 +220,7 @@ void HPAK_AddLump( qboolean bUseQueue, const char *name, resource_t *pResource,
if( pResource->nDownloadSize < HPAK_ENTRY_MIN_SIZE || pResource->nDownloadSize > HPAK_ENTRY_MAX_SIZE ) if( pResource->nDownloadSize < HPAK_ENTRY_MIN_SIZE || pResource->nDownloadSize > HPAK_ENTRY_MAX_SIZE )
{ {
Con_Printf( S_ERROR "%s: invalid size %s\n", name, Q_pretifymem( pResource->nDownloadSize, 2 )); Con_Printf( S_ERROR "%s: invalid size %s\n", name, Q_memprint( pResource->nDownloadSize ));
return; return;
} }
@@ -441,7 +441,7 @@ static qboolean HPAK_Validate( const char *filename, qboolean quiet, qboolean de
if( dataDir[i].disksize < HPAK_ENTRY_MIN_SIZE || dataDir[i].disksize > HPAK_ENTRY_MAX_SIZE ) if( dataDir[i].disksize < HPAK_ENTRY_MIN_SIZE || dataDir[i].disksize > HPAK_ENTRY_MAX_SIZE )
{ {
// odd max size // odd max size
Con_DPrintf( S_ERROR "%s: lump %i has invalid size %s\n", __func__, i, Q_pretifymem( dataDir[i].disksize, 2 )); Con_DPrintf( S_ERROR "%s: lump %i has invalid size %s\n", __func__, i, Q_memprint( dataDir[i].disksize ));
Mem_Free( dataDir ); Mem_Free( dataDir );
FS_Close( f ); FS_Close( f );
if( delete ) FS_Delete( pakname ); if( delete ) FS_Delete( pakname );
@@ -462,7 +462,7 @@ static qboolean HPAK_Validate( const char *filename, qboolean quiet, qboolean de
if( !quiet ) if( !quiet )
{ {
Con_Printf( "%i: %s %s %s: ", i, COM_ResourceTypeFromIndex( pRes->type ), Con_Printf( "%i: %s %s %s: ", i, COM_ResourceTypeFromIndex( pRes->type ),
Q_pretifymem( pRes->nDownloadSize, 2 ), pRes->szFileName ); Q_memprint( pRes->nDownloadSize ), pRes->szFileName );
} }
if( memcmp( md5, pRes->rgucMD5_hash, 0x10 )) if( memcmp( md5, pRes->rgucMD5_hash, 0x10 ))

View File

@@ -407,34 +407,23 @@ char *Q_pretifymem( float value, int digitsafterdecimal )
if( value > onemb ) if( value > onemb )
{ {
value /= onemb; value /= onemb;
suffix = " Mb"; suffix = "Mb";
} }
else if( value > onekb ) else if( value > onekb )
{ {
value /= onekb; value /= onekb;
suffix = " Kb"; suffix = "Kb";
} }
else else
{ {
suffix = " bytes"; suffix = "bytes";
} }
// clamp to >= 0
digitsafterdecimal = Q_max( digitsafterdecimal, 0 );
// if it's basically integral, don't do any decimals // if it's basically integral, don't do any decimals
if( fabs( value - (int)value ) < 0.00001f ) if( fabs( value - (int)value ) < 0.00001f || digitsafterdecimal <= 0 )
{ Q_snprintf( val, sizeof( val ), "%i %s", (int)round( value ), suffix );
Q_snprintf( val, sizeof( val ), "%i%s", (int)value, suffix ); else if( digitsafterdecimal >= 1 )
} Q_snprintf( val, sizeof( val ), "%.*f %s", digitsafterdecimal, (double)value, suffix );
else
{
char fmt[32];
// otherwise, create a format string for the decimals
Q_snprintf( fmt, sizeof( fmt ), "%%.%if%s", digitsafterdecimal, suffix );
Q_snprintf( val, sizeof( val ), fmt, (double)value );
}
// copy from in to out // copy from in to out
i = val; i = val;