Skip to content

Commit

Permalink
Core/DBLayer: Fixed some crashes caused by incorrect prepared stateme…
Browse files Browse the repository at this point in the history
…nts usage

Closes #5934
  • Loading branch information
Shauren committed Mar 29, 2012
1 parent e77f51d commit 0221434
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 40 deletions.
75 changes: 36 additions & 39 deletions src/server/game/Handlers/CharacterHandler.cpp
Expand Up @@ -1724,7 +1724,6 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)


// Switch Languages // Switch Languages
// delete all languages first // delete all languages first

stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILL_LANGUAGES); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILL_LANGUAGES);
stmt->setUInt32(0, lowGuid); stmt->setUInt32(0, lowGuid);
trans->Append(stmt); trans->Append(stmt);
Expand All @@ -1733,52 +1732,50 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recv_data)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
stmt->setUInt32(0, lowGuid); stmt->setUInt32(0, lowGuid);



// Faction specific languages // Faction specific languages
if (team == BG_TEAM_ALLIANCE) if (team == BG_TEAM_HORDE)
{
stmt->setUInt16(1, 98);
}
else if (team == BG_TEAM_HORDE)
{
stmt->setUInt16(1, 109); stmt->setUInt16(1, 109);
} else
stmt->setUInt16(1, 98);


trans->Append(stmt); trans->Append(stmt);


// Race specific languages // Race specific languages
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE); if (race != RACE_ORC && race != RACE_HUMAN)
stmt->setUInt32(0, lowGuid);

switch (race)
{ {
case RACE_DWARF: stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE);
stmt->setUInt16(1, 111); stmt->setUInt32(0, lowGuid);
break;
case RACE_DRAENEI:
stmt->setUInt16(1, 759);
break;
case RACE_GNOME:
stmt->setUInt16(1, 313);
break;
case RACE_NIGHTELF:
stmt->setUInt16(1, 113);
break;
case RACE_UNDEAD_PLAYER:
stmt->setUInt16(1, 673);
break;
case RACE_TAUREN:
stmt->setUInt16(1, 115);
break;
case RACE_TROLL:
stmt->setUInt16(1, 315);
break;
case RACE_BLOODELF:
stmt->setUInt16(1, 137);
break;
}


trans->Append(stmt); switch (race)
{
case RACE_DWARF:
stmt->setUInt16(1, 111);
break;
case RACE_DRAENEI:
stmt->setUInt16(1, 759);
break;
case RACE_GNOME:
stmt->setUInt16(1, 313);
break;
case RACE_NIGHTELF:
stmt->setUInt16(1, 113);
break;
case RACE_UNDEAD_PLAYER:
stmt->setUInt16(1, 673);
break;
case RACE_TAUREN:
stmt->setUInt16(1, 115);
break;
case RACE_TROLL:
stmt->setUInt16(1, 315);
break;
case RACE_BLOODELF:
stmt->setUInt16(1, 137);
break;
}

trans->Append(stmt);
}


if (recv_data.GetOpcode() == CMSG_CHAR_FACTION_CHANGE) if (recv_data.GetOpcode() == CMSG_CHAR_FACTION_CHANGE)
{ {
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Handlers/PetitionsHandler.cpp
Expand Up @@ -912,7 +912,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket & recv_data)
stmt->setUInt32(0, GUID_LOPART(petitionGuid)); stmt->setUInt32(0, GUID_LOPART(petitionGuid));
trans->Append(stmt); trans->Append(stmt);


stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_GUID);
stmt->setUInt32(0, GUID_LOPART(petitionGuid)); stmt->setUInt32(0, GUID_LOPART(petitionGuid));
trans->Append(stmt); trans->Append(stmt);


Expand Down

0 comments on commit 0221434

Please sign in to comment.