Fix several bugs from iodoom3 bugtracker

rhyskidd@gmail.com found them (with PVS studio IIRC), reported them and posted
patches.
Some of the patches were incorrect so I rewrote them.
This commit is contained in:
Daniel Gibson 2012-05-13 14:40:11 +02:00 committed by dhewg
parent 1e087d9bf6
commit 94cd0ee559
4 changed files with 6 additions and 11 deletions

View file

@ -1257,8 +1257,8 @@ bool idGameLocal::InitFromSaveGame( const char *mapName, idRenderWorld *renderWo
if ( !InhibitEntitySpawn( mapEnt->epairs ) ) { if ( !InhibitEntitySpawn( mapEnt->epairs ) ) {
CacheDictionaryMedia( &mapEnt->epairs ); CacheDictionaryMedia( &mapEnt->epairs );
const char *classname = mapEnt->epairs.GetString( "classname" ); const char *classname;
if ( classname != '\0' ) { if ( mapEnt->epairs.GetString( "classname", "", &classname ) ) {
FindEntityDef( classname, false ); FindEntityDef( classname, false );
} }
} }
@ -1626,8 +1626,9 @@ void idGameLocal::GetShakeSounds( const idDict *dict ) {
const char *soundShaderName; const char *soundShaderName;
idStr soundName; idStr soundName;
soundShaderName = dict->GetString( "s_shader" ); if ( dict->GetString( "s_shader", "", &soundShaderName )
if ( soundShaderName != '\0' && dict->GetFloat( "s_shakes" ) != 0.0f ) { && dict->GetFloat( "s_shakes" ) != 0.0f )
{
soundShader = declManager->FindSound( soundShaderName ); soundShader = declManager->FindSound( soundShaderName );
for ( int i = 0; i < soundShader->GetNumSounds(); i++ ) { for ( int i = 0; i < soundShader->GetNumSounds(); i++ ) {

View file

@ -399,8 +399,6 @@ void idRenderModelLiquid::InitFromFile( const char *fileName ) {
} else if ( !token.Icmp( "shader" ) ) { } else if ( !token.Icmp( "shader" ) ) {
parser.ReadToken( &token ); parser.ReadToken( &token );
shader = declManager->FindMaterial( token ); shader = declManager->FindMaterial( token );
} else if ( !token.Icmp( "seed" ) ) {
seed = parser.ParseInt();
} else if ( !token.Icmp( "update_rate" ) ) { } else if ( !token.Icmp( "update_rate" ) ) {
rate = parser.ParseFloat(); rate = parser.ParseFloat();
if ( ( rate <= 0.0f ) || ( rate > 60.0f ) ) { if ( ( rate <= 0.0f ) || ( rate > 60.0f ) ) {

View file

@ -4285,7 +4285,7 @@ void CXYWnd::Paste()
int nLen = g_Clipboard.GetLength(); int nLen = g_Clipboard.GetLength();
char *pBuffer = new char[nLen + 1]; char *pBuffer = new char[nLen + 1];
memset(pBuffer, 0, sizeof(pBuffer)); memset(pBuffer, 0, sizeof(*pBuffer) * (nLen + 1));
g_Clipboard.Read(pBuffer, nLen); g_Clipboard.Read(pBuffer, nLen);
pBuffer[nLen] = '\0'; pBuffer[nLen] = '\0';
Map_ImportBuffer(pBuffer, !(GetAsyncKeyState(VK_SHIFT) & 0x8000)); Map_ImportBuffer(pBuffer, !(GetAsyncKeyState(VK_SHIFT) & 0x8000));

View file

@ -1565,10 +1565,6 @@ bool idCameraPosition::parseToken( const idStr &key, idParser *src ) {
name = token; name = token;
return true; return true;
} }
else if ( !key.Icmp( "time" ) ) {
time = src->ParseInt();
return true;
}
else { else {
src->Error( "unknown camera position key: %s", key.c_str() ); src->Error( "unknown camera position key: %s", key.c_str() );
return false; return false;